在 iFrame 中显示父历史

display parent back history in iFrame

我想在我页面的 iframe 中显示用户以前访问过的页面。例如:如果一个用户在 cnn.com,然后他们输入 mysite.com 点击我页面上的一个按钮,我是我页面上的 iframe 来显示 cnn.com.

我已经在线阅读了几个解决方案,但 none 已经解决了我的问题。我目前的实现如下:

index.html:

<body>
        <div>
            <h1>Welcome to mysite!</h1>
            <h3>Click the button to see a site you have previously visited</h3>
            <button id="button">magic</button>
        </div>
        <br>    
        <p>This is a site you visited previously</p>
        <iframe id="myIFrame" height="500px" width="100%" class="netframe" src="example.com"></iframe>

</body>

script.js:

$(document).ready(function(){

        $("#button").click(function(e){  
            document.getElementById("button").style.color = "red"; 
            $("#myIFrame").attr('src', parent.history.back());

        });
});

我遇到的问题是,当我单击按钮时,整个页面返回,并且没有显示在 iframe 中。所以在我的示例中,当我单击按钮时,我的整个页面从 mysite.com 变为 cnn.com。我希望父页面保持不变,并且 iframe 在其中加载 cnn.com。

我已经阅读了一些关于历史如何根据加载 iframe 的不同而不同的怪癖,但 none 其中对我有所帮助。

有没有办法做我想做的事?

不,这不是你能做的事。用户浏览历史的内容一般被视为机密;您不能让浏览器向您显示它们。

如果用户通过单击上一页上的 link 导航到您的页面,您可以通过检查 document.referrer 来确定该页面是什么。但是,如果用户手动输入您的页面 URL,则情况并非如此,正如您在问题中所描述的那样。

在任何情况下,像 history.back() 这样的方法都不会 return 一个值;它们使框架导航到其历史记录中的上一页。无法确定此页面是什么,这样做通常会导致您的脚本停止 运行(因为您的页面不再处于活动状态)。