我有一个JS函数,用于轮询iframe中的当前url,目的是确定iframe是否指向与主文档相同的站点。因此,代码基本上是:
function urlCheck()
{
var location = document.getElementById('frameid').contentWindow.location.href;
if (location)
{
// iframe src is currently local
}
else
{
// iframe src is currently not local
}
}
从功能上讲,这段代码非常有效。但是,在错误控制台中,每次调用此函数并且iframe src不是本地时,我都会收到错误:
Permission denied for [site1] to get property Location.href from [site 2]
如何修复代码以避免这些错误?
谢谢, 马拉
答案 0 :(得分:12)
将代码包装在try-catch块中应该能够捕获并处理这些错误。
答案 1 :(得分:0)
实际上,错误消息是您想要的信息:只要iframe的网址指向其他域,您就会收到权限错误。这是避免XSS attacks的安全措施。
[编辑]这意味着您可以用以下代码替换上面的代码:
function urlCheck()
{
try
{
document.getElementById('frameid').contentWindow.location.href;
// iframe src is currently local
}
catch (e)
{
// iframe src is currently not local
}
}