Javascript 检测页面是否在iframe中并获取iframe id
我们有一个游戏,我们的一个客户正在尝试将游戏加载到他们的iframe中。出于某种原因,他们需要锁定地址栏,并在iFrame中添加了滚动=“否”样式 这打破了我们的游戏,因为我们有一个滚动覆盖,他们永远无法摆脱 我正在寻找一种方法来获取iframe并检查iframe id,而不需要在其域上使用跨域策略。这可能吗。我只需要iframeID,或者检查样式,看看它是否可滚动 我觉得这是不可能的,因为浏览器跨域安全,但我想问一下这里,看看是否有人有任何建议 我正在尝试这个Javascript 检测页面是否在iframe中并获取iframe id,javascript,html,iframe,cross-domain,Javascript,Html,Iframe,Cross Domain,我们有一个游戏,我们的一个客户正在尝试将游戏加载到他们的iframe中。出于某种原因,他们需要锁定地址栏,并在iFrame中添加了滚动=“否”样式 这打破了我们的游戏,因为我们有一个滚动覆盖,他们永远无法摆脱 我正在寻找一种方法来获取iframe并检查iframe id,而不需要在其域上使用跨域策略。这可能吗。我只需要iframeID,或者检查样式,看看它是否可滚动 我觉得这是不可能的,因为浏览器跨域安全,但我想问一下这里,看看是否有人有任何建议 我正在尝试这个 var ganFrame = d
var ganFrame = document.getElementById( ganId );
它将返回它应该返回的null
召唤
var ganFrame = window.top.getElementById( ganId );
但是我得到了预期的跨域错误。是否有一种方法可以检测此iframe而不出错。我不需要访问它,只是想看看它是否存在
我可以检测window.top!=但我们还有其他客户需要我们在iframe中使用覆盖
注意
客户端不会更改其iframe的行为方式
客户端不会更改其iframe的行为方式
您的客户是否愿意更改游戏的url?
例如,您可以让他们在url中传递一个参数,如:
您可以检查是否设置了document.referer,但用户可能会禁用该referer并破坏您的代码。我知道这是一个黑客攻击,但它解决了我的问题 因为我知道我要找的帧的id,所以我可以使用这个代码来获得想要的效果
if(window.top != window.self){
try {
var ganFrame = window.top.getElementById("gameFrame");
}
catch ( e ) {
isIOS7HelperDisabled = true;
}
}
只是希望不会由此引发其他错误。可能需要检查错误类型。请稍候。iframe的宽度和高度均为100,并且基本上不可逃避?你想用JavaScript修复它?不,它适合窗口。我们只是有一个覆盖,需要用户在屏幕上滑动。因为他们的iframe是不可滚动的,所以这段代码不起作用。在这种情况下,我们只是想隐藏覆盖,但无法检测到它们的iframe。我意识到crossDomain.xml策略是可行的,但如果我们能够避免,那就更好了。必须有一种方法来检测它。iframe在代码中是否可见?它是一个浏览器还是一个应用程序还是其他什么?虽然这会起作用,但在过去,他们非常不愿意适应我们并做出改变。我们有游戏内促销和优惠,并为此使用url参数。由于该客户端拒绝更改其目的,我们不得不将其默认为关闭。此解决方案不起作用。如果调用window.top的任何方法,都会出现跨域错误。