检测页面是否在iframe内并获取iframe ID

时间:2017-12-20 23:18:19

标签: javascript html iframe cross-domain

我们有一款游戏,其中一位客户正在尝试在iframe中加载游戏。出于某种原因,他们需要锁定地址栏并在其iFrame中添加了scrolling =“no”样式。

这打破了我们的游戏,因为我们有一个他们永远无法摆脱的向上滚动。

我正在寻找一种方法来获取iframe并检查iframe ID,而不需要在其域上使用跨域策略。这可能吗。我需要的只是iframeID或者可以检查样式并查看它是否可滚动。

我觉得这是不可能的,因为浏览器跨域安全性,但想到id在这里问,看看是否有人有任何建议。

我正在尝试这个。

var ganFrame = document.getElementById( ganId );

返回null应该

调用

var ganFrame = window.top.getElementById( ganId );

但是我得到了预期的跨域错误。有没有办法检测这个iframe没有错误。我不需要访问它只是一种查看它是否存在的方式。

我可以检测到window.top!= window.self,但是我们还有其他客户需要我们在带有叠加层的iframe中。

注意

客户端不会更改其iframe的行为方式。

2 个答案:

答案 0 :(得分:1)

  

客户端不会更改其iframe的行为方式。

您的客户是否愿意更改您的游戏网址? 例如,您可以让它们在url中传递一个参数,如: https://mygame.com/game.php?noScrollMode=true

您可以检查是否已设置document.referrer,但用户可能会停用引荐来源并破坏您的代码。

答案 1 :(得分:0)

我知道这是一个黑客,但它解决了我的问题。

因为我知道框架的ID,我正在寻找能够使用此代码获得所需效果的框架。

if(window.top != window.self){
    try {
        var ganFrame = window.top.getElementById("gameFrame");
    }
    catch ( e ) {
        isIOS7HelperDisabled = true;
    }
}

希望不会因此触发其他错误。可能需要检查错误类型。