【发布时间】:2013-06-19 16:21:33
【问题描述】:
我有一个加载本地页面(代理)的 iframe:我需要不执行这些页面中的 Javascript(我已经在服务器上执行它,在客户端再次执行它会导致双重执行,因此不好) .
我可以通过使用新的“沙盒”参数来实现这一点。
问题是我需要能够将事件从主窗口添加到 iframe 内容。这似乎不起作用。
我用jsfiddle准备了一个例子。
<iframe
id='iframe1'
sandbox='allow-top-navigation allow-same-origin allow-forms'
srcdoc='<html><head></head><body><div id="test">iframe1</div><script>document.body.style.backgroundColor="yellow"</script></body></html>'>
</iframe>
<iframe
id='iframe2'
srcdoc='<html><head></head><body><div id="test">iframe2</div><script>document.body.style.backgroundColor="yellow"</script></body></html>'>
</iframe>
$('iframe').load(function() {
var id = this.id;
//this works in both iframes
$(this).contents().find("#test").html(id+" says gnek!");
//I need this to work for iframe 1, too.
$(this).contents().on("click", function(event) {
alert("clicked "+id);
});
});
如您所见,frame1 被沙盒化,不执行内部 JS(背景未变黄)。但是,我可以在父窗口中使用 JS 更改其内容。
有没有办法添加事件呢?如果没有,将页面加载到 iframe 中而不让它执行其 javascript 的最佳方法是什么?
【问题讨论】:
标签: jquery iframe jquery-events sandbox