【发布时间】:2013-11-06 19:58:00
【问题描述】:
示例代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
function on_iframe_load() {
document.getElementById('iframe_a').onload = function() {
alert('Thanks for the visit!');
};
}
</script>
</head>
<body>
<iframe name="iframe_a" id="iframe_a"></iframe>
<a href="http://www.example.com/" target="iframe_a" onclick="on_iframe_load();">Go!</a>
</body>
</html>
它可以在所有主流浏览器中正常运行,但 IE8(可能还有以前的版本)不理解它。
更新:刚刚想出了一个解决方案,但我不确定它是否是正确的编码。请查看:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var clicked = false;
function activate() {
clicked = true;
}
function pop() {
if (clicked) {
alert('Thanks for the visit!');
};
}
</script>
</head>
<body>
<iframe name="iframe_a" onload="pop();"></iframe>
<a href="http://www.example.com/" target="iframe_a" onclick="activate();">Go!</a>
</body>
</html>
【问题讨论】:
-
什么意思?只有在您单击链接时才会出现警报消息,而不是在初始页面加载时出现。
-
我将您的代码直接放入 JSFiddle.net 禁用了这些库。将 IE9 设置为在 IE8 模式下工作,您的示例将按您的意愿工作。这个“示例”代码与实际问题代码相反吗?(我知道 ie8 模式下的 ie9 不是精确测试)
-
@Adrian:不,这是我在真正的 IE8 中尝试过的真正代码,而不是在模拟器中。
-
是的,刚刚试过,如果在真正的 ie8 中“失败”,我可以使用 onreadystatechanged 事件让它工作......
-
我不认为为“点击”添加标志是一个可靠的解决方案。您最好尝试使用 javascript 进行不显眼的编码方式(查看我编辑的答案)。 IE 使用
attachEvent,其他浏览器使用addEventListener可以解决您的问题。
标签: javascript html iframe internet-explorer-8