首页 文章

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

提问于
浏览
0

我们有一个游戏,我们的一个客户正试图在他们的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中 .

Note

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

2 回答

  • 0

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

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

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

  • 1

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

    所以因为我知道我正在寻找的帧的id我能够使用这段代码来获得所需的效果 .

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

    只是希望没有其他错误从此触发 . 可能需要检查错误类型 .

相关问题