开场白:我检查了提供的扩展 ID 并且 background.js 文件是空的,所以我认为你在本地工作并且没有上传你的最新代码。因此,我根据此线程中提供的代码以及一般弹出窗口的工作方式来回答。
首先请允许我总结一下我从您的问题中理解的内容:
- 您想向您的扩展程序添加一个按钮,单击该按钮时会打开一个弹出窗口,其中包含来自您的资源的 HTML
- 您想使用 jQuery 根据活动选项卡的 URL 自定义带有远程内容的弹出 HTML
要实现此场景,您必须在 3 个范围内工作(扩展页面、背景和弹出窗口)并使用消息传递在它们之间进行通信。因此,您可以通过以下方式实现您的目标:
1)在后台范围内,设置您的浏览器按钮以打开一个弹出窗口。[注意:您不能将按钮配置为同时使用 onClick 处理程序和弹出窗口。有关更多信息,请参阅appAPI.browserAction中的注释]
背景.js:
appAPI.ready(function ($){
// Create popup browser button
appAPI.browserAction.setResourceIcon('icon.png');
appAPI.browserAction.setPopup({
resourcePath: 'terms.html',
height: 930,
width: 455
});
});
2)在弹出范围内,向扩展范围发送消息以获取页面URL,当收到响应时,对远程内容进行请求并通过jQuery将其注入HTML。注意:您只能在弹出范围内直接修改弹出 HTML。
条款.html:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="text/javascript">
function crossriderMain($) {
// Listen for response from active tab
appAPI.message.addListener(function(msg) {
// If response is the page URL
if (msg.type === 'setPageUrl') {
// make request to remote server for content with the page URL as a param
appAPI.request.get({
url: 'http://example.com?url=' + msg.url,
onSuccess: function (response, additionalInfo){
// Convert received JSON string to object
var responseObj = appAPI.JSON.parse(response);
// Clear loading message
$('#remote-content').text('');
// add content to popup HTML
$(responseObj.html).prependTo('#remote-content');
}
});
}
});
// Request page URL from active tab
appAPI.message.toActiveTab({type: 'getPageUrl'});
}
</script>
</head>
<body>
<div id='remote-content'>Loading ...</div>
</body>
</html>
3)在扩展范围内,处理对页面URL的请求
扩展.js:
appAPI.ready(function ($){
// Listen for request for page URL
appAPI.message.addListener(function(msg) {
// Send page URL to popup
appAPI.message.toPopup({
type: 'setPageUrl',
url: encodeURIComponent(location.href)
});
});
});
如果您有任何需要保密的具体要求,请随时联系 Crossrider 支持 (support@crossrider.com)。
[免责声明:我是 Crossrider 的员工]