2008-09-22 67 views
10

Có thể gọi chức năng JavaScript từ thẻ IMG SRC để nhận url hình ảnh không?Thẻ SRC IMG và JavaScript

Như thế này:

<IMG SRC="GetImage()" /> 

<script language="javascript"> 
    function GetImage() {return "imageName/imagePath.jpg"} 
</script> 

này được sử dụng .NET 2.0.

+0

Câu hỏi này không thực sự vạch ra những gì bạn đang cố gắng đạt được? – Ian

+0

Đồng ý - nó đã cho tôi một phút để tìm ra những gì ông đã nhận được tại ... –

+0

Không đồng ý - rõ ràng. – DragonLord

Trả lời

20

Nope. Nó không thể, ít nhất là không phải trong tất cả các trình duyệt. Bạn có thể làm một cái gì đó giống như thay vì điều này:

<img src="blank.png" id="image" alt="just nothing"> 
<script type="text/javascript"> 
    document.getElementById('image').src = "yourpicture.png"; 
</script> 

khuôn khổ Javascript yêu thích của bạn sẽ cung cấp cách đẹp hơn :)

-1

No. Thuộc tính SRC của Img không phải là sự kiện, do đó JS nội tuyến sẽ không bao giờ kích hoạt.

+0

Tuy nhiên, có một URI và có thể chạy javascript: giả URI. Đây là nguyên nhân gây ra lỗ hổng XSS. – Quentin

1

Bạn không thể làm điều đó inline @src hình ảnh, nhưng bạn sẽ có thể gọi nó là từ một khối kịch bản nội tuyến ngay sau khi hình ảnh của bạn:

<img src="" id="myImage"/> 
<script type="text/javascript"> 
    document.getElementById("myImage").src = GetImage(); 
</script> 
+0

Opera không hỗ trợ thẻ tập lệnh nội tuyến? Tin mới đối với tôi. – levik

+5

Đó là thực sự xa sự thật. Bạn nên đặt thẻ tập lệnh ở xa trang của bạn càng tốt, vì việc hiển thị DOM bị trì hoãn cho đến khi tập lệnh hoàn tất thực thi. Bạn thực sự có thể tăng tốc thời gian tải trang bằng cách đặt các thẻ tập lệnh ở phần cuối của cơ thể. –

-1

Bạn đang tìm kiếm this.src '

<img src='images/test.jpg' onmouseover="alert(this.src);"> 
0

Vì bạn đang sử dụng? .NET, bạn có thể thêm thuộc tính runat="server" và đặt src trong codebehind của bạn.

0

Bạn có thể có thể làm điều đó ở phía máy chủ. Cách khác, bạn có thể đính kèm một sự kiện onload để hoán đổi hình ảnh src. Tôi đoán câu hỏi sau đó sẽ trở thành, tại sao bạn phải sử dụng Javascript ở tốc độ đầu tiên?

1

bạn có thể tự động nạp hình ảnh bằng cách gọi một trang aspx trong SRC.

Ví dụ:

<img src="provideImage.aspx?someparameter=x" /> 

Ở phía trang, bạn sẽ cần phải đưa hình ảnh vào phản hồi và thay đổi loại nội dung cho hình ảnh.

"Vấn đề" duy nhất là hình ảnh của bạn sẽ không được lập chỉ mục, bạn nên đặt một số bộ nhớ cache trên trang của nhà cung cấp đó hoặc bạn sẽ tàn phá máy chủ.

7

Có thể gọi hàm JavaScript từ thẻ IMG SRC để nhận url hình ảnh không?

Bạn có ý định làm điều gì đó như sau không?

<img src="javascript:GetImage()" /> 

Thật không may, không - bạn không thể làm điều đó. Tuy nhiên, bạn có thể làm việc hack sau:

function getImageUrl(img) { 
    var imageSrc = "imageName/imagePath.jpg"; 
    if(img.src != imageSrc) { // don't get stuck in an endless loop 
     img.src = imageSrc; 
    } 
} 

Sau đó, có html sau:

<img src="http://yourdomain.com/images/empty.gif" onload="getImageUrl(this)" /> 

Sự kiện onload sẽ chỉ cháy nếu bạn có một hình ảnh thực tế thiết lập để thuộc tính src - nếu bạn không thiết lập thuộc tính đó hoặc đặt nó vào một chuỗi rỗng hoặc một cái gì đó tương tự, bạn sẽ không có tình yêu. Đặt nó thành một gif trong suốt một pixel hoặc một cái gì đó tương tự.

Dù sao, hack này hoạt động, nhưng tùy thuộc vào những gì bạn đang thực sự cố gắng để thực hiện, điều này có thể không phải là giải pháp tốt nhất. Tôi không biết tại sao bạn muốn làm điều này, nhưng có lẽ bạn có một lý do chính đáng (mà bạn muốn chia sẻ với chúng tôi!).

0

Tôi đã phải làm một cái gì đó như thế này trước đây, và IIRC lừa gạt lên được rằng bạn không thể thay đổi một thuộc tính src của một hình ảnh đó là một phần của cây DOM. Vì vậy, đặt cược tốt nhất của bạn là viết bộ khung HTML mà không có hình ảnh và 1) tạo một hàm onLoad tạo ra phần tử img mới với document.createElement, 2) đặt thuộc tính src với setAttribute() và 3) đính kèm nó vào DOM của bạn cây.

-1

onload sự kiện của hình ảnh được gọi là một lần nữa và một lần nữa làm một số điều như thế này sự kiện

0

onload của hình ảnh được gọi là một lần nữa và một lần nữa làm một số điều như thế này

10

Nếu bạn đang ở trong tâm trạng cho hacks, điều này cũng hoạt động.

<img src='blah' onerror="this.src='url to image'"> 
+1

gây ra lỗi để giải quyết vấn đề, tuyệt vời: D đã giảm bớt – F0G

0

thì sao?

var imgsBlocks = new Array('/1.png', '/2.png', '/3.png'); 
function getImageUrl(elemid) { 
var ind = document.getElementById(elemid).selectedIndex; 
document.getElementById("get_img").src=imgsBlocks[ind]; 
} 

nó không hoạt động?

<img src="'+imgsBlocks[2]+'" id="get_img"/> 
+0

Giả định rằng bạn đang xây dựng HTML trong mã JS của mình; Không có gợi ý trong câu hỏi rằng đây là trường hợp. –

Các vấn đề liên quan