HTML 错误:无权限访问属性 ‘target’
在本文中,我们将了解错误“无权限访问属性 ‘target’”。
元素 ‘target’ 返回已调用事件的元素。这个错误可以发生在任何属性上,不仅仅是’target’属性。例如,同样的错误也可能发生在 ‘document’ 上。这个错误发生在传递的对象不遵循该网站的同源策略时。在Google Chrome和Firefox中,这个错误会作为 DOMException 发生,在Safari中作为安全错误发生。
同源策略规定,如果文件和资源具有相同的协议和主机,则它们可以在服务器之间共享。
这个错误主要是由 < iframe>标签引起的,该标签用于从第三方获取数据,这违反了同源策略,因为同源策略基于安全原因限制了第三方的使用。
要解决这个问题,可以删除使用的 < iframe>标签,也可以添加 Access-Control-Allow-Origin 。
示例1:此示例创建了同源错误,最终导致“无权限访问属性 ‘target’”。不同的浏览器可能会给出不同的错误,但意思是相同的。
HTML
<!DOCTYPE html>
<html lang="en-US">
<head>
<iframe
id="myframe" src=
"https://www.geeksforgeeks.org/">
</iframe>
<script>
onload = function () {
console.log(frames[0].target);
// Error: Permission denied to access property "target"
};
</script>
</head>
<body></body>
</html>
输出:

注意: 简单地通过删除 < iframe>标签或在服务器端添加 Access-Control-Allow-Origin 来解决错误。
示例2: 在这个示例中,我们只是移除了 < iframe>标签。你可能会想,如果你运行下面的代码,错误是否仍然发生,但错误出现是因为你没有声明任何事件,浏览器无法读取‘target’的属性,但实际上这个可用的错误已经被移除了。你可以简单地定义一个事件来解决它。
HTML
<!DOCTYPE html>
<html lang="en-US">
<head>
<script>
onload = function () {
console.log(frames[0].target);
};
</script>
</head>
<body></body>
</html>
输出:

注意: 很多时候,即使在代码中没有iframe,错误仍然存在。你对此无能为力,因为这可能是浏览器方面的错误,如果存在的话,很快就会得到解决。例如,在Firefox 54.0版本发布时,就出现了这个错误,但是开发人员后来修复了它,现在在最新的Firefox 105.0.3版本中不存在这样的问题。
极客教程