作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用下一个代码来注入(inject)侧边栏。 https://github.com/curtislacy/inject-sidebar
function handleRequest(
//The object data with the request params
request,
//These last two ones isn't important for this example, if you want know more about it visit: http://code.google.com/chrome/extensions/messaging.html
sender, sendResponse
) {
if (request.callFunction == "toggleSidebar")
toggleSidebar();
}
chrome.extension.onRequest.addListener(handleRequest);
/*Small function wich create a sidebar(just to illustrate my point)*/
var sidebarOpen = false;
function toggleSidebar() {
if(sidebarOpen) {
var el = document.getElementById('mySidebar');
el.parentNode.removeChild(el);
sidebarOpen = false;
}
else {
var sidebar = document.createElement('div');
sidebar.id = "mySidebar";
sidebar.innerHTML = "\
<h1>Hello</h1>\
World!\
";
sidebar.style.cssText = "\
position:fixed;\
top:0px;\
left:0px;\
width:30%;\
height:100%;\
background:white;\
box-shadow:inset 0 0 1em black;\
z-index:999999;\
";
document.body.appendChild(sidebar);
sidebarOpen = true;
}
}
如何在边栏中加载远程 URL 而不是使用 innerHTML?(对 JavaScript 非常陌生)
最佳答案
为了加载远程 URL,您必须使用 iframe
。但请记住,远程网页必须允许这样做(许多网页不允许)。
这是一个示例扩展,它有一个 brwoser-action,可以在事件选项卡中切换侧边栏。
侧边栏显示 http://www.cnn.com/
。
在 manifest.json 中:
{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"background": {
"persistent": false,
"scripts": ["./bg/background.js"]
},
"content_scripts": [{
"matches": ["*://*/*"],
"js": ["./fg/content.js"],
"run_at": "document_idle",
"all_frames": false
}],
"browser_action": {
"default_title": "Test Extension"
//"default_icon": {
// "19": "img/icon19.png",
// "38": "img/icon38.png"
//}
}
}
在 background.js 中:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.sendMessage(tab.id, { action: "toggleSidebar" });
});
在 content.js 中:
var sidebarURL = "http://www.cnn.com/";
var isSidebarOpen = false;
var sidebar = createSidebar();
/* Create a sidebar */
function createSidebar() {
var sb = document.createElement("iframe");
sb.id = "mySidebar";
sb.src = sidebarURL;
sb.style.cssText = ""
+ "border: 3px groove;\n"
+ "width: 30%;\n"
+ "height: 100%;\n"
+ "position: fixed;\n"
+ "top: 0px;\n"
+ "left: 0px;\n"
+ "z-index: 9999;\n"
+ "";
return sb;
}
/* Show/Hide the SideBar */
function toggleSidebar() {
if (isSidebarOpen) {
document.body.removeChild(sidebar);
} else {
document.body.appendChild(sidebar);
}
isSidebarOpen = !isSidebarOpen;
}
/* Listen for message from the background-page and toggle the SideBar */
chrome.runtime.onMessage.addListener(function(msg) {
if (msg.action && (msg.action == "toggleSidebar")) {
toggleSidebar();
}
});
关于javascript - 如何在边栏中加载远程 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895922/
我是一名优秀的程序员,十分优秀!