一个奇怪的请求,但我希望能够有一个父窗口:
window.open
)目前,我可以通过在页面顶部包含以下内容在子窗口中的 中执行此操作:
<script>
Function.prototype.call = function() {};
Function.prototype.apply = function() {};
</script>
这几乎可以阻止子页面中的任何javascript运行。但有没有办法让我从父窗口做?在任何脚本有机会运行之前,我可以以某种方式将此代码注入子页面吗?
或者还有其他方法吗?
任何帮助表示赞赏
答案 0 :(得分:2)
您可以使用服务器端位删除所有<script>
标记和内联事件处理程序,例如onclick
。
修改强>
使用客户端,您可以尝试使用ajax删除整个页面,然后将内容写入新创建的窗口。我认为你不能使用
$.get('page.html', function(html) {
var html = $(html).find('script').remove().html();
});
因为脚本可能在添加到DOM时执行,所以可能需要使用解析器或只使用正则表达式。
答案 1 :(得分:2)
window.open()
返回对新创建的窗口的引用。如果窗口位于同一个原点,您可以自由访问它。
var popup = window.open('/some/page.html');
popup.contentWindow // = the popup's `window` object
然而,您提出的代码doesn't work。您可能已经看到它破坏了jQuery,这使得call
和apply
的自由使用,但它没有阻止正常的函数调用。
答案 2 :(得分:0)
如果子窗口位于iframe
?有这样的问题,答案是 - 你不能用php serverside轻松做到这一点。