jQuery Force为iframe设置src属性


83

我有一个主页(实际上是一个JSP),其中包含一个iframe。

<iframe name="abc_frame" id="abc_frame" src="about:blank" frameborder="0" scrolling="no"></iframe>

现在主页上有多个链接(通过JSP动态呈现),可以尝试将src设置为某些URL ...

现在我的问题是,使用jQuery(可能是live()),我可以用abc_frame的“ src”属性始终具有某些特定值(例如“ somefixedURL”)的方式覆盖它吗?

我无法捕获链接点击,因为它是通过某些Java代码完全动态创建的,因此我试图覆盖iframe src吗?

Answers:


166

使用attr

$('#abc_frame').attr('src', url)

这样,您可以获得并设置每个HTML标签属性。注意还有.prop()。有关差异,请参见.prop()与.attr()。短版:.attr()用于以HTML源代码编写的属性,并且.prop()用于附加到DOM元素的所有JavaScript。


这不起作用的原因是在页面加载后,另一个链接会将src更改为新值...
testndtv

如果在文件末尾整理代码,则代码将在其他脚本之后执行。如果您的问题是由用户单击的特定链接创建的,则可以向该链接添加第二个onclick事件。否则,您必须使用setTimout / setInterval并反复检查src的值(难看!)。
PiTheNumber 2011年

20

如果您使用的是jQuery 1.6及更高版本,则要使用.prop()而不是.attr():

$('#abc_frame').prop('src', url)

有关差异的说明,请参见此问题


4
有趣的链接,但请注意,答案已更新,因为jQuery恢复了 attr()行为。总的来说,我不赞成在.prop()这里使用,因为这src是属性,而不是.prop()链接的API文档所说明的属性。
PiTheNumber

9

在生成链接时,将目标设置为iframes name属性,您可能根本不必处理jquery。

<a href="inventory.aspx" target="contentframe"  title="Title Inventory">
<iframe id="iframe1" name="contentframe"  ></iframe>

最好在可能的情况下使用浏览器的本机方法,但我认为用户具有动态链接,因此需要捕获点击属性。
efwjames 2014年

有多动态?生成页面时,只需将href设置为所需的值即可。甚至在dom加载时也可以根据需要设置href属性。关键是不必处理iframe的src属性,这使它成为可能。
Brian Rizo 2014年


5

设置src属性对我不起作用。iframe没有显示网址。

对我有用的是:

window.open(url, "nameof_iframe");

希望它能帮助某人。


.attr()设置对我也不起作用。虽然有效
Andy N

3
<script type="text/javascript">
  document.write(
    "<iframe id='myframe' src='http://www.example.com/" + 
    window.location.search + "' height='100' width='100%' >"
  ) 
</script>  

此代码从包含iframe的页面获取url参数(?a = 1&b = 2),并将它们附加到iframe的基本url。它适用于我的目的。


document.write等同于使用eval()-它需要脚本注入!只能非常小心地使用!
amphetamachine,

1

您无法设置FIX iframe的src或阻止javascript / form提交更改其位置。但是,您可以将脚本加载页面的中,并更改每个动态链接的操作。


1
$(".excel").click(function () {
    var t = $(this).closest(".tblGrid").attr("id");
    window.frames["Iframe" + t].document.location.href = pagename + "?tbl=" + t;
});

这就是我用的,不需要jQuery。在这种特殊情况下,对于我拥有的每个表都带有excel导出图标,这会强制连接到该表的iframe使用该页面所要查找的查询字符串中的变量来加载同一页面,并且如果找到响应,则会用excel mimetype并包含该表的数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.