Javascript 如何阻止iFrame重新加载
我试图通过在onload事件中添加参数将参数传递给iFrame,如下所示:Javascript 如何阻止iFrame重新加载,javascript,iframe,Javascript,Iframe,我试图通过在onload事件中添加参数将参数传递给iFrame,如下所示: <iframe name="myframe" src="http://test.com/hello" onload=" frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();"> </iframe> (getUserName是我的自定义函数) 但是iFrame会一次又一次地加载。如何仅使用j
<iframe name="myframe" src="http://test.com/hello" onload=" frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();">
</iframe>
(getUserName是我的自定义函数)
但是iFrame会一次又一次地加载。如何仅使用javascript(而不是任何js框架)来阻止这种情况
注意:由于某些原因,我只能编写内联javascript脚本。您可以设置一个全局标志(选择一个不与任何其他名称冲突的适当名称):
或者,可以为元素设置自定义属性:
var userSet = this.getAttribute('data-userset');
if (window.frames['myframe'] && !userSet){
this.setAttribute('data-userset', 'true');
frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();
}
或者,如果以后不必再次调用事件处理程序,可以将其删除:
if (window.frames['myframe']){
this.onload = null;
this.setAttribute('onload', '');
frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();
}
顺便问一下,你有什么if
语句?我认为无论如何它都是正确的。您可以设置一个全局标志(选择一个不与任何其他名称冲突的适当名称):
或者,可以为元素设置自定义属性:
var userSet = this.getAttribute('data-userset');
if (window.frames['myframe'] && !userSet){
this.setAttribute('data-userset', 'true');
frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();
}
或者,如果以后不必再次调用事件处理程序,可以将其删除:
if (window.frames['myframe']){
this.onload = null;
this.setAttribute('onload', '');
frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();
}
顺便问一下,你有什么if
语句?我认为不管怎样,它总是正确的
。使用一个计数器,这样它只在第一次重定向时才正确
最初它是0
并重定向,第二次它是1
等,因此不重定向
<script>var counter = 0</script>
<iframe name="myframe" src="http://test.com/hello"
onload="if (window.frames['myframe'] && counter++ === 0){ frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();}">
</iframe>
var计数器=0
使用计数器,使其仅在第一次重定向时
最初它是0
并重定向,第二次它是1
等,因此不重定向
<script>var counter = 0</script>
<iframe name="myframe" src="http://test.com/hello"
onload="if (window.frames['myframe'] && counter++ === 0){ frames['myframe'].location.href='http://test.com/hello?uname='+getUserName();}">
</iframe>
var计数器=0
因为HREF在onload上更改,而HREF的更改将重新加载iFrame
因此,您必须将onload
删除到其他事件。因为HREF在onload
上更改,并且更改HREF将重新加载iFrame
因此,您必须将onload
删除到其他事件。Oops。正在尝试设置条件,但在将其发布到此处之前忘记编辑代码。现在已更改..@heylo:I see:)在事件处理程序中,您可以使用this
引用处理程序绑定到的元素。Oops。正在尝试设置条件,但在将其发布到此处之前忘记编辑代码。现在已更改..@heylo:我明白了:)在事件处理程序中,您可以使用this
引用处理程序绑定到的元素。抱歉,不能使用脚本标记:(抱歉,不能使用脚本标记:(