我正在开发一个网站,该网站要求用户登录第 3 方网站,该网站显示在我的网站的 iframe 中。我正在尝试使用 jQuery 提取该网站的 html 代码,但它实际上不起作用。这是我的代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Iframe</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
console.log($("#iframe").contents().find("body"));
});
</script>
</head>
<body>
<iframe src="https://www.google.com"></iframe>
</body>
</html>
我在示例中使用谷歌,但我使用的是另一个网站。我得到的结果是这样的 - w.fn.init [prevObject: w.fn.init(0)] - 但我找不到 html。有谁知道怎么做吗?
最佳答案
想象一下您的网站能够访问您所包含的任何 iframe 的内容。您可以简单地包含 Facebook、Gmail 或用户登录的任何银行网站等网站,然后窃取他们的个人信息。所以默认情况下这是严格禁止的:https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
不过,有一种“选择加入”技术,可以在父窗口和 iframe 之间进行通信。基本上每个站点/文档都定义要传输的信息并使用 window.postMessage() 方法发送它:https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
因此,如果消息是从一方发送的
window.postMessage("hello!", "http://example.com");
可能会被对方收到
window.addEventListener("message", function(e) {
console.log(e.data); // prints "hello!"
}, false);
关于javascript - 使用 javascript/jquery 访问 iframe 的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49955826/