我在网页上有一个 iFrame,在所有其他页面上我有一个按钮说“讨论”。当用户单击此按钮时,它会将他们带到 iframe 页面。
我想知道如何让 iframe 显示用户刚刚来自的页面?即带有讨论按钮的页面。
这样最终用户将能够通过在 iframe 中查看该页面来讨论该页面。
在此先感谢,丹尼尔。
我在网页上有一个 iFrame,在所有其他页面上我有一个按钮说“讨论”。当用户单击此按钮时,它会将他们带到 iframe 页面。
我想知道如何让 iframe 显示用户刚刚来自的页面?即带有讨论按钮的页面。
这样最终用户将能够通过在 iframe 中查看该页面来讨论该页面。
在此先感谢,丹尼尔。
下面是一个例子。两个文件必须在同一个目录中。
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 变量将源页面传递给框架页面。通常,这是由网络浏览器自动完成的,但它不够可靠,因为用户可以禁用该功能。将framepage.html
使用这两种方法来检测源页面 URL。