我在权限中添加了“标签”,但此代码无效。当url直接传递而不是从脚本传递时,iframe会起作用。
<html>
<head>
</head>
<body >
<iframe src="www" id="link" width="400" height="300">
<p>Your browser does not support iframes.</p>
</iframe>
<script>
var url1="xxx";
chrome.tabs.getSelected(null,function(tab) {
var url1= tab.url;
});
document.getElementById("link").src=url1;
</script>
</body>
</html>
答案 0 :(得分:1)
让我看看我是否理解这个问题。
您需要向内容脚本清单添加访问具有iframe的网页的权限。完成后,您可以使用Content Scripts及其Message Passing将数据传递到该iframe。
在上面的示例中,您需要注入内容脚本,因此在清单中:
"content_scripts": [{
"matches": ["https://www.my.injected.url/*"],
"js": ["injected_script_that_has_the_iframe.js"],
"run_at": "document_end",
"all_frames": true
}]
然后在该内容脚本中,您可以使用普通的JavaScript来设置URL:
document.getElementById("link").src= someURL;
现在,该URL来自何处?它来自你的扩展吗?如果是这样,请使用消息传递来请求。
chrome.extension.sendRequest({method: "GetURL"}, function(response) {
document.getElementById("link").src= response.url;
});
在您的后台页面中,您会收听来自您背景页面的请求:
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == "GetURL")
sendResponse({url: "http://rim.com"});
else
sendResponse({}); // snub them.
});
总结一下,您的内容脚本会询问您的扩展程序(背景页面),网址是什么,一旦获得响应,它就会更新iframe。