admin管理员组文章数量:1178553
I'm trying to set an 'src' by calling a javascript function that returns the path like so:
<img src="getImagePath()" />
the function:
function getImagePath(){
return "images/image1.png";
}
But it doesn't seem to work. Anything I'm missing? Thanks to anyone pointing me in the right direction.
I'm trying to set an 'src' by calling a javascript function that returns the path like so:
<img src="getImagePath()" />
the function:
function getImagePath(){
return "images/image1.png";
}
But it doesn't seem to work. Anything I'm missing? Thanks to anyone pointing me in the right direction.
Share Improve this question asked Aug 30, 2012 at 12:03 user818700user8187004 Answers
Reset to default 15The src
attribute takes an URL, not JavaScript. You might want to try
<img src="pixel.gif" onload="this.onload=null; this.src=getImagePath();" />
You can't do this. The src
attribute of an img
element can't be interpreted as javascript when the html is interpreted.
But you may do this :
<img id=someImage>
<script>
function getImagePath(){
return "images/image1.png";
}
document.onload = function(){
document.getElementById('someImage').src=getImagePath();
};
</script>
Building on Eugen's answer, I wanted something self-contained (no id's, as inline as possible) that would not require a hosted pixel.gif
image. I came up with a few possibilities:
One option would be to use a base64 encoded src URL instead (as small as possible). Note that data-uris are supported in IE8+:
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" onload="this.onload=null; this.src=getImagePath();">
See it in action on jsfiddle.
A second option would be to use document.write
to write the image tag directly with an inline script. Just put the below <script>
instead of the <img>
. Note that many consider document.write
to be bad practice:
<script>
function getImagePath() {
return "http://i.imgur.com/4ILisqH.jpg";
}
document.write('<img src="'+getImagePath()+'">');
</script>
See it in action on codepen.io.
A third (perhaps even more hackish) option would be to forcibly break the image by supplying a null src, and (ab)use the onerror
callback.
This works in IE11 and Chrome, but not Firefox:
<img src onerror="this.onerror=null; this.src=getImagePath();">
See it in action on jsfiddle.
This fourth option relies on a simple function that sets an <img>
tag followed immediately by an inline <script>
that sets the image's src via JavaScript:
<!-- In the <body> -->
<img><script>set_most_recent_img_src(getImagePath())</script>
And in your <head>
:
<!-- In the <head> -->
<script>
function getImagePath() { return "https://www.gravatar.com/avatar/71ec7895cada78741057c644d858b0e3"; }
function set_most_recent_img_src(val) {
var a = document.body.getElementsByTagName('IMG');
var img = a?a[a.length-1]:0;
if (img) img.src = val;
}
</script>
See it in action on codepen.io.
Summary: I'm just ideating. Each option has different implications and requirements -- they're all workarounds, and should be tested thoroughly for your specific use case. Personally I think the first option (base64 URI) is the most solid (if you ignore old IE browsers, which I happily can).
https://stackoverflow.com/a/17229404/487771
<script type="text/javascript">
var country = $("#SCountry").val();
document.getElementById("iframeid").setAttribute("src","https://domain.com/country="+country)
</script>
本文标签: htmlJavascript function return src pathStack Overflow
版权声明:本文标题:html - Javascript function return src path - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738003296a2047618.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论