【问题标题】:iframe source from URL来自 URL 的 iframe 源
【发布时间】:2014-04-07 04:20:34
【问题描述】:

我们的网站上有一个页面,该页面加载了 afillate 商店的 iFrame。我们希望发送一封包含链接的电子邮件,这些链接将加载我们网站上的页面,其中包含 iFrame 中特色产品的详细信息。我在下面的代码正在运行,但如果用户直接访问我们网站上的页面,它会中断 - 不使用 URL 中定义的页面元素的链接。

不确定是否重要,但 iframe 源位于完全不同的域中,我无法控制它。

这可行:http://www.mysite.html/thispage.aspx?id=16500&page=http://myiframesource.com/detail/0307959473

这不起作用:http://www.mysite.html/thispage.aspx?id=16500(iframe src 更改为“未定义”onload)

这是我目前所拥有的:

<script language="javascript">
    window.onload = updateiframe; //event handler (calls the function)

    function updateiframe() {
        function getUrlVars() {
            var vars = [], hash;
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

            for(var i = 0; i < hashes.length; i++) {
                hash = hashes[i].split('=');
                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }

            return vars;
        }

        var hash = getUrlVars();
        var myiframepage = decodeURIComponent(hash['page']);
        document.getElementById('myiframe').src = myiframepage;
    }
</script>

<iframe id="myiframe" name="myiframe" src="myiframesource.com" width="555" height="2000" border="0" style="border: 0px solid #ffffff;"></iframe>

提前感谢您的帮助!

【问题讨论】:

  • 请您的用户通过单击电子邮件中的链接访问该页面!因为它是从 url 中获取 iframesrc 的!如果iframe src 没有根据用户更改,则只需在iframesrc 中直接键入链接!

标签: javascript html iframe


【解决方案1】:

不起作用的 URL 缺少“页面”参数。

您的 javascript 正在从 URL 中获取所有参数并将它们放入一个数组中。接下来它尝试在该数组中查找“page”参数:

var myiframepage = decodeURIComponent(hash['page']);

这显然是缺失的。因此,您的 iframe 的“未定义”来源。

您可以在您的 javascript 中添加一小部分来检查正确的 'id' 参数,如果是 16500 并且您缺少 'page' 参数,您可以执行 javascript 重定向:

var hash = getUrlVars();
var myiframepage = decodeURIComponent(hash['page']);
if(typeof(myiframepage) == 'undefined') {
    var id = decodeURIComponent(hash['id']);
    if(typeof(id) != 'undefined' && id == '16500') {
        window.location.replace('http://www.mysite.html/SiteText.aspx?id=16500&page=http://myiframesource.com/detail/0307959473');
    }
}
else {
    document.getElementById('myiframe').src = myiframepage;
}

上面显示的这段小代码应该照顾那些没有您电子邮件中的链接并直接浏览到页面的人...

在传递这样的数据时要小心。通过提供具有不同页面参数的 URL,人们可以轻松劫持您的 iframe 并在其中显示恶意网站!

【讨论】:

  • 非常感谢!这对我有用,但根据您对劫持的评论,我决定采用不同的路线并定义 iframe url 的基础,并且只在链接中传递数字参数。这也解决了未定义页面参数以及将 iframe 源更改为未定义的问题。再次感谢!
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
相关资源
最近更新 更多