当出现跨源问题时,我们如何在iframe内的DOM变化中添加事件监听器?

问题描述 投票:0回答:1

我在一个html页面的主体内有一个iframe。在iframe内有另一个html页面。Iframe有src='https:/binge.com'. 对于第一次加载iframe内容时(即 https:/binge.com)我的事件处理程序onreadystatechange被调用。但是当我在binge.com中搜索一些东西时,我去了一些不同的位置,我的iframe scr没有改变,但是html的内容却很好。而且onreadystatechange函数也没有执行。我不知道为什么是这种情况?当用户导航离开时,我怎样才能访问像url这样的变化?https:/binge.com为什么我的iframe的src没有改变?另外,由于跨源的问题,我不能直接访问iframe内的改变的url。

我是新的javascript。任何线索将是非常有用的。

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <style>
        body,html,iframe{
            height:100%;
            width:100%;
        }
    </style>
    <meta>
    <meta>
    <meta>
</head>
<body>

    <iframe src="" id="iframe">  </iframe>


    <script type="text/javascript">
            document.onreadystatechange = function () {
                if (document.readyState == "complete") {
                    abc();
                }
            }

    function abc() {

    }

    </script>
</body>
</html>
javascript html dom iframe cross-browser
1个回答
0
投票

简短的回答:你不能

我试着做了你的这个问题,当页面第一次加载到你指定的src上时,你可以访问iframe的内容,因为src是从服务器端指定的,被认为是安全的,只要src内的页面发生变化,javascript就无法再访问内容,因为无法保证是否安全。例如,你可以加载一个有恶意软件的网站,这样javascript就会阻止访问。如果你通过程序改变src,例如 document.getElementById("myIframe").src = "www.example.com"; 您的事件应该启动,但如果iframe页面在iframe内被更改,则不会。

希望能帮到你

或者,你可以考虑设置一个代理服务器脚本,并将一个iframe链接到你的脚本上,也可以将每个页面的内容返回到你的网页上。

© www.soinside.com 2019 - 2024. All rights reserved.