0

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

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

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

在此先感谢,丹尼尔。

4

1 回答 1

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.htmlURL 变量将源页面传递给框架页面。通常,这是由网络浏览器自动完成的,但它不够可靠,因为用户可以禁用该功能。将framepage.html使用这两种方法来检测源页面 URL。

于 2012-07-18T15:45:00.963 回答