Chrome扩展消息传递-如何传递HTML
Chrome Extension Message Passing - How to pass HTML
我正试图从chrome扩展中的本地向活动选项卡上的div发送HTML。我通过后台脚本发送HTML,并通过注入活动选项卡的内容脚本接收。
我已经让端口工作起来,并用各种简单的基于文本的消息进行了测试。div也出现了,但它是空白的,因为HTML没有正确发送。有人知道我的代码出了什么问题吗?
后台脚本:
chrome.runtime.onConnect.addListener(function(port) {
console.assert(port.name == "sidebar");
port.onMessage.addListener(function(msg) {
if (msg.command == "read_sidebar")
{
//var sidebarURL = chrome.extension.getURL("sidebar.html");
//console.log(sidebarURL);
var element = document.createElement('div');
element.id = "test";
$("test").load('sidebar.html');
port.postMessage({command: "load_sidebar", html: element.innerHTML})
}
else if (msg.command == "close_load") {
console.log("told to close load");
}
});
});
内容脚本:
function loadSidebar() {
var port = chrome.runtime.connect({name: "sidebar"});
port.postMessage({command: "read_sidebar"});
port.onMessage.addListener(function(msg) {
if (msg.command == "load_sidebar")
{
console.log(msg.html);
document.getElementById("mySidebar").innerHTML= msg.html;
port.postMessage({command: "close_load"});
}
});
}
此API只能发送JSON-可序列化对象,而HTMLElement不可序列化。
您可以尝试将HTML添加到清单的web_accessible_resources
部分:
"web_accessible_resources" : [
"sidebar.html",
(any resources used by sidebar.html)
],
然后,您可以使用直接从内容脚本加载文件
chrome.runtime.getURL('sidebar.html')
作为其URL。
您可以将它作为iframe注入,或者如果它是静态HTML,您可以使用XHR请求它并处理响应。
相关文章:
- 如何在带有node.js,express和ejs的字符串中传递html标签
- 通过JavaScript传递HTML
- Chrome扩展消息传递-如何传递HTML
- 传递html表单's从一个输入字段到JavaScript事件函数的多个输入值
- 如何在Bootstrap 3 Popover中通过数据内容属性传递HTML内容
- 如何为有值的输入元素传递HTML ID
- 如何在Javascript函数中使用Ruby传递html值
- 有可能用PHP表单传递html元素属性吗?
- 通过Ajax Asp传递HTML代码.净MVC
- 如何在jquery中传递html数据表的行添加功能
- 传递HTML表单post数据到不同的文件/网页javascript变量(php)
- Jquery工具提示传递html样式/格式化代码时需要调整.html()方法
- 如何在AngularJS中使用$resource在URL查询字符串中传递HTML表单字段中的数据
- 如何传递HTML
- 通过innerHTML使用html DOM在输入字段中传递html文本
- 如何在struts 1.2中使用html:link传递html:text值
- 如何在Javascript中传递HTML数据
- 如何通过查询字符串传递html
- 使用fs.readFileSync和buf.toString通过js传递html
- 在React State中传递html标记的正确方式是什么