iFrame - 如何加载用户刚刚来自的页面?

时间:2012-07-18 14:17:48

标签: iframe

我在网页上有一个iFrame,在所有其他页面上我有一个按钮说“讨论”。当用户点击此按钮时,它会将他们带到iframe页面。

我想知道如何让iframe显示用户刚刚来自的页面?即带有讨论按钮的页面。

这样,最终用户将能够通过在iframe中查看该页面来讨论该页面。

提前致谢, 丹尼尔。

1 个答案:

答案 0 :(得分:0)

以下是一个例子。两个文件必须位于同一目录中。

mainpage.html

<html>
  <body>
    <script>
      function gotoFramePageNormal() {
        window.open('framepage.html', '_top');
      }
      function gotoFramePageWithVar() {
        window.open('framepage.html?ref='+document.location.href, '_top');
      }
    </script>
    <input type=button value="Discuss" onclick="gotoFramePageNormal()" /> (normal referrer; via HTTP header)<br />
    <br />
    <input type=button value="Discuss" onclick="gotoFramePageWithVar()" /> (with URL variable referrer)<br />
  </body>
</html>

framepage.html

<html>
  <body>
    <div>
      Source: <span id="srcurl">...</span>
    </div>
    <iframe id="theframe" width=800 height=600></iframe>
    <script>
      (function() {
        if (document.referrer=='') { //no referrer
          //parse URL variables
          var a=document.location.search,b,c;
          while ( (a.length>0) && (a[0]=='?') ) a=a.substring(1,a.length);
          //split variables
          a=a.split('&');
          //check each variable
          for (b=0; b<a.length; b++) {
            //split name and value
            c=a[b].split('=');
            if (c[0].toLowerCase()=='ref') {
              //show source url
              srcurl.innerText=decodeURI(c[1]);
              //set iframe source
              theframe.location.href=decodeURI(c[1]);
              return;
            }
          }
          //show no source url
          srcurl.innerText='none';
        } else { //has referrer
          //show source url
          srcurl.innerText=document.referrer;
          //set iframe source
          theframe.location.href=document.referrer;
        }
      })();
    </script>
  </body>
</html>

mainpage.html使用URL变量将源页面传递给框架页面。通常,这是由Web浏览器自动完成的,但由于该功能可以被用户禁用,因此不够可靠。 framepage.html将使用这两种方法来检测源页面网址。