【发布时间】:2016-06-04 21:50:48
【问题描述】:
我制作了一个 Chrome 扩展程序,它使用我的 YouTube 订阅页面的 <iframe> 加载我的新标签页(我解决了 X-frame-options 问题)并且想要隔离文档的特定元素 #content确切地说(即订阅源)。无论是减去:not(#content) 的所有内容,还是将#content 删除并将其放入另一个<div> 都是可行的。这是我的代码:
Background.html
<html>
<head>
<script type="text/javascript" src="jquery-2.2.0.min.js"></script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="window.js"></script>
</head>
<body>
<iframe id="left" name="left"></iframe>
<div id="canvas"></div>
</body>
</html>
Window.js
$(document).ready(function(){
var $left = $('#left');
$left.on('load', function() {
$(this).contents().find('#content').clone().appendTo('#canvas');
});
$left.attr('src', 'https://www.youtube.com/feed/subscriptions');
});
Script.js
chrome.webRequest.onHeadersReceived.addListener(
function(info) {
var headers = info.responseHeaders;
for (var i = headers.length - 1; i >= 0; --i) {
var header = headers[i].name.toLowerCase();
if (header == 'x-frame-options' || header == 'frame-options') {
headers.splice(i, 1); // Remove header
}
}
return {
responseHeaders: headers
};
}, {
urls: ['*://*/*'], // Pattern to match all http(s) pages
types: ['sub_frame']
}, ['blocking', 'responseHeaders']
);
Manifest.json
{
"manifest_version": 2,
"version": "1.0",
"background": "background.html",
"chrome_url_overrides" : {
"newtab": "background.html"
},
"permissions": [
"background",
"contextMenus",
"webRequest",
"webRequestBlocking",
"tabs",
"<all_urls>"
]
}
目前,YouTube 已加载,但我无法在 <iframe> 中获取该文档,因为它正在记录以下错误:
Uncaught SecurityError: Failed to read the 'contentDocument' property from
'HTMLIFrameElement': Blocked a frame with origin "chrome-extension://ID" from
accessing a frame with origin "https://www.youtube.com". The frame requesting
access has a protocol of "chrome-extension", the frame being accessed has a
protocol of "https". Protocols must match.
我正在尝试获取 div#contentisolated 以便从我的新标签页导航。我已经看到建议在manifest.json 文件中使用"all_frames":true 的解决方案,但这似乎并没有解决它。有任何想法吗?谢谢!
【问题讨论】:
标签: javascript jquery html iframe google-chrome-extension