【问题标题】:Can i modify HTML DOM of an external URL loaded using window.open?我可以修改使用 window.open 加载的外部 URL 的 HTML DOM 吗?
【发布时间】:2011-07-31 20:40:53
【问题描述】:

假设我有一个页面:www.mydomain.com

当用户点击一个按钮时,它会打开一个新窗口:

newWin = window.open("https://www.otherdomain.com","a","height=800,width=1000");

现在,我想修改页面上的一些字段。具体来说,新窗口显示一个表单,我希望能够使用用户在 mydomain.com 上输入的详细信息自动填写表单

这可能吗?

如果是,那我又要问另一个问题了:

使用 jQuery,我如何为新加载的页面调用 ready() 事件处理程序?

编辑:所以,正如大多数人在这里指出的那样。它的同源政策。我可以用任何其他方式来做吗?喜欢在框架中显示其他页面?

【问题讨论】:

  • 不可能。想象一下,我打开了您最喜欢的银行的 URL,但我通过 jQuery 对其进行了调整,以便它通过 Flash 对象将您的登录凭据发布到 my 站点,而不是银行的站点。
  • 我可以用其他方式吗?喜欢在框架中显示其他页面?

标签: javascript jquery html dom window


【解决方案1】:

您对新页面 DOM 没有太多控制权,因为它位于另一个域中,

您可以控制的是何时关闭它:

所以假设你想在 1 分钟内关闭它,你现在可以在主窗口上做:

setTimout(function(){newWin.close()},60000)

但除此之外,我不相信除了将 javascript 调用发送到新窗口之外,您还可以做很多事情:

newWin.open('javascript:alert("Hello");');

【讨论】:

    【解决方案2】:

    嗯,有几种方法:-?

    newWin = window.open("https://www.otherdomain.com","a","height=800,width=1000");
    $(newWin).ready(function(){
        alert('New page has '+newWin.document.forms.length+' forms.');
    });
    

    【讨论】:

    • 等等,我才意识到这是另一个域名。耸耸肩。
    • 这是行不通的,因为域不同,浏览器会强制使用same origin policy
    • @Khez 所以un-1我哈哈。仅当它们在同一个域中时才有效lol
    • 我可以用其他方式吗?喜欢在框架中显示其他页面?
    • 理论上没有。你试图做的事情相当于Cross Site Scripting。这意味着大多数网络浏览器将拒绝一个域名的 javascript 访问另一个域名的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2011-01-14
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多