gpt4 book ai didi

javascript - 从 PageMod ContentScriptFile 发出 Ajax 请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:20:50 25 4
gpt4 key购买 nike

我正在 beta builder 中构建它,但我真的不知道如何在我的 contentScriptFile 中进行 ajax 调用。我想拉一个 ajax 请求以动态地将数据拉回到脚本中,这样我就可以更改页面内容。我一直在搜索和搜索,显然是在寻找错误的术语。感谢帮助!谢谢

主要.js

代码:

exports.main = function() {};
var data = require("self").data;
var pageMod = require("page-mod");
pageMod.PageMod({
include: "http://www.mozilla.org/*",
contentScriptWhen: 'ready',
contentScriptFile: [
data.url('jquery.1.7.1.js'),
data.url('common.js'),
data.url("mozilla.top.js")
]
})

mozilla.top.js

代码:

var qs = parseQS();
var foo= qs['string'];
var Request = require('request').Request;

Request({
url: "http://www.myremotepage.org?q="+foo,
onComplete: function (response) {
alert(response);
}
}).get();
alert('test');

阐明最终目标的旧代码 - http 请求不返回任何内容,即使它在浏览器中工作。假设这是第 3 方 ajax 工具的权限问题,并在上​​面使用附加请求工具开始。

代码:

/*
$.ajax({
url: 'http://www.myremotepage.org?q='+foo,
data: {q:strSearchQuery},
dataType: 'json',
success: function(data) {
var div = $("<div style='background-color: #ececec;'><h2 style='text-align: right; font-size: 11px; color: #666;'>Test</h2><ul id='ptcid'></ul></div>");
alert(data.length);
for(var i = 0; i < data.length; ++i)
{
alert('test');
div.find('ul').append('<li></li>');
div.find('ul li:last').append('<h3>' + data[i].header+ '</h3>');
div.find('ul li:last').append('<div>'+data[i].body+'</div>');
div.find('ul li:last').append('<div>' + data[i].footer + '</div>');
}
div.insertBefore('#header');
}
});
*/

最佳答案

您遇到的一个直接问题是 mozilla.top.js 作为内容脚本添加,并尝试使用 Request 模块。您不能在内容脚本中使用请求等 SDK 模块,您需要在 main.js 中发出请求,然后使用 worker.port.emit() 将请求数据传递到您的内容脚本中。该文档详细介绍了内容脚本通信:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/dev-guide/addon-development/content-scripts/using-port.html

示例实现如下所示:

var pm = require("page-mod").PageMod({
include: [page_url],
contentScriptFile: [data.url('jquery.min.js'), data.url('panel.js')],
onAttach: function(worker) {
Request({
url: "http://dl.dropbox.com/u/1212936/test.json",
onComplete: function (response) {
var parsed = JSON.parse(response.text);
worker.port.emit('got-request', parsed);
}
}).get();
}
});

在您的内容脚本中:您可以将监听器附加到“获取请求”事件:

self.port.on('got-request', function(data) {
console.log(data);
$('#data').html(pp(data));
});

这是一个使用此代码的构建器的工作示例 - 它非常非常简单,但希望能有所帮助:

https://builder.addons.mozilla.org/addon/1034982/latest/

关于javascript - 从 PageMod ContentScriptFile 发出 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com