【发布时间】:2012-02-13 14:55:58
【问题描述】:
基本上,我加载了一个 iframe,只要它触发 onload 事件,就会从父级访问它。它工作正常,但是当 iframe 的内容不再在同一个域上时出现错误,这是意料之中的。
唯一的问题是,我想抑制这些错误。不幸的是,try/catch 没有捕捉到这个异常,并且试图访问这些属性中的任何一个来验证它们都会再次产生相同的错误,从而违背了目的。
我是否有可靠的方法来简单地检查 iframe 内容是否可访问而不会产生任何错误消息?
谢谢
编辑:
为了上下文,不要让人们用不相关的 cmets 回答;我正在编写一个小脚本,它会根据 iframe 文档的高度自动调整父页面上的 iframe 大小。当用户单击指向域外的 iframe 内的链接时,我显然无法检测到页面的高度,但我不希望在控制台中触发任何错误,而是优雅地处理异常。
我知道有可用的变通方法,我只是想通过了解是否有一种优雅的方法来处理这些情况,而不是仅仅诉诸丑陋的变通方法来教育自己。
【问题讨论】:
-
也许这是一个告诉你不要使用 iframe 的标志...
-
认真的吗?如果您没有什么可贡献的,请不要发表评论。
-
Naatan,这家伙给你的建议是我 +1。如果它们的协议和主机名与字母不匹配,则您不能让页面和框架相互通信或操纵彼此的内容(根本;甚至不阅读)。就是这样,永远不会有办法让它表现得不同。这是为了防止恶意的家伙与无辜的人混在一起并从那里偷窃。
-
Hari,我很清楚这一点,但鉴于我没有给你我的问题的背景,你不应该编造一个。在您的情况下,我的问题毫无意义,我同意。但这无关紧要,我在问一个问题,而您所做的只是说“好吧,在我的情况下,您的问题没有任何意义,所以您不应该做您想做的事情”。这无关紧要。不过,我将根据上下文更新我的主要问题,以免继续使用这些类型的 cmets。
-
虽然这个答案与这个问题无关,但提醒所有开发人员“尽可能避免使用 iframe”是一个可靠的建议。 :(
标签: javascript jquery security iframe exception-handling