iframe内容取决于引用页面

时间:2008-11-08 13:34:44

标签: ajax iframe

有没有办法根据引用页面改变iframe的初始内容?

例如,当第1页的网址直接在地址栏中输入时,“第1页”的iframe显示“初始内容1”。如果点击“第2页”链接到“第1页”,“第1页”上的iframe内容将以“初始内容2”开头。

我希望这是有道理的。


非常感谢splattne。

我刚试过你的想法,但我无法做到。我的页面现在在正文中有以下内容:

if (document.referrer != 'page2.html') {
   document.getElementById('prdfrm2').src = 'contenta.html';
}   
if (document.referrer != 'page3.html') {
   document.getElementById('prdfrm2').src = 'contentb.html';
}   
if (document.referrer != 'page4.html') {
   document.getElementById('prdfrm2').src = 'contentc.html';
}
else {
   document.getElementById('prdfrm2').src = 'contentx.html';
}

似乎我访问父页面(直接,从第2,3或4页的链接)加载相同的内容,来自contentc的内容 - 你能想到为什么吗?


感谢帮助人员,但我仍然遇到问题。如果这可以做到'服务器端'那将是很好的但我对此很少有经验。有谁知道如何用PHP做到这一点?

如果可能,我想根据输入地址栏的网址更改iframe内容。例如,我一直在使用脚本:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function gup( name ) {
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp( regexS );
   var results = regex.exec( window.location.href );
   if( results == null )
      return "";
   else
      return results[1];
}

addLoadEvent(function() {
       var targetURL = gup("iframe");
      document.all.myIframe.src=targetURL;
})

在地址栏中,我可以输入http://mysite.com/page11.html?&iframe=page12.html,以便第11页的iframe包含第12页。

问题是此脚本适用于Safari和IE但不适用于FF :(

正如我所说的,在PHP中使用它的任何提示都很棒。

1 个答案:

答案 0 :(得分:1)

您可以使用 document.referrer HTML DOM属性在Javascript中以这种方式解决:

if (document.referrer != 'page2.html') {
   document.getElementById('iFrameId').src = 'content1.html';
}
else {
   document.getElementById('iFrameId').src = 'content2.html';
}

这是some documentation on the referrer property

你也可以在服务器端做。只需告诉我们您正在使用的环境(ASP.NET,PHP,...)。