我目前对iframe有一些问题......
我有一个带有搜索框的iframe,我想通过创建一个新标签/窗口点击go来进行此搜索框重定向
http://img51.imageshack.us/i/issuec.png/
所以要清楚,我的谷歌浏览器扩展调用作为内容脚本:overlay.js然后这个将放在当前页面的末尾我的“overlay.html”页面。
所以问题来自于我的.html被表示为iframe而我看不出我如何从这个iframe重定向。
overlay.html
<form id="searchForm" action="#" onsubmit="searchBoxRedirection(this)" method="post">
<img id="logo" src="images/extension.png" alt="Logo"></img>
<input type="search" value="" name="searching">
<input type="submit" value="Go !" />
</form>
overlay.js中
var overlay= {
init: function() {
this.injectoverlay();
//alert('Initialisation reussie');
},
injectoverlay: function() {
var body = $('body'),
overlayURL = chrome.extension.getURL("overlay.html"),
iframe = $('<iframe id="YouroverlayFrame" src="'+overlayURL+'">');
body.append(iframe);
iframe.show();
//alert('Injection reussie');
}
}
Tool.js
function searchBoxRedirection(form)
{
tabs.create({url:"www.yahoo.fr"});
}
的manifest.json
{
"background_page" : "background.html",
"browser_action" :
{
"default_icon" : "images/Extension.png"
},
"content_scripts":
[ {
"all_frames": true,
"css": ["css/overlay.css"],
"js": ["js/overlay.js"],
"matches": ["http://*/*"],
"run_at": "document_start"
} ],
"permissions" : ["tabs", "unlimitedStorage", "http://*/*"],
"name" : "MyOverlay",
"version" : "1.1",
"description" : "Sindar Overlay"
}
答案 0 :(得分:4)
由于您使用Content-Scripts,除了少量chrome.extensions之外,您无法调用任何Chrome API。*
以下是内容脚本可以执行的一些示例:
在网页中查找未链接的网址 将它们转换为超链接'
- 增加字体大小以使文字更清晰
- 在DOM中查找和处理微格式数据
但是,内容脚本有一些 限制。他们不能:
- 使用chrome。* API(chrome.extension的部分除外)
- 使用其扩展程序页面定义的变量或函数
- 使用由网页或其他内容定义的变量或函数 脚本
- 制作跨网站XMLHttpRequests
现在要做你想做的事,你需要转到一个链接,你有两个选择:
消息传递很简单,您所做的只是向chrome.tabs.create
新页面的扩展程序发送请求。
<强> contentscript.js 强>
chrome.extension.sendRequest({visit: "http://yahoo.fr"});
<强> background.html 强>
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.visit) {
chrome.tabs.create({url: request.visit});
}
sendRepsonse({}); // Snub
});
内容脚本注入:
<iframe src='iframe.html'></iframe>
<script type="text/javascript">
function changeURL(url) {
document.location=url;
}
</script>
IFrame包含:
<a href="javascript:parent.changeURL('http://yahoo.fr');">Change to Yahoo</a>
答案 1 :(得分:0)
我正在尝试同样的事情,但遗憾的是不知道在哪里放下面的代码
家长方法
Content Script injects:
<iframe src='iframe.html'></iframe>
<script type="text/javascript">
function changeURL(url) {
document.location=url;
}
</script>
IFrame contains:
<a href="javascript:parent.changeURL('http://yahoo.fr');">Change to Yahoo</a>