- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在 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() 将请求数据传递到您的内容脚本中。该文档详细介绍了内容脚本通信:
示例实现如下所示:
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));
});
这是一个使用此代码的构建器的工作示例 - 它非常非常简单,但希望能有所帮助:
关于javascript - 从 PageMod ContentScriptFile 发出 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990440/
我目前正在制作一个 Firefox 扩展,但是当我浏览到特定网址时,我无法运行该功能。 在我的 chrome.manifest 中,我有 overlay chrome://browser/conten
我在开发扩展时遇到了这个问题。我根据选项卡就绪事件将 pageMod 附加到页面以修改页面的内容,但是当我重新加载页面时,工作人员似乎又附加了一次,因此在 1 次重新加载后,它会为同一网址加载 2 个
我有一个 SDK 扩展,可以在页面上注入(inject)脚本。在插件选项中有 1 个 bool 用于打开或关闭该脚本。 var pageMod = require("sdk/page-mod"); v
是否可以使用间隔更新它?我试过: var timers = require("timers"); var pageMod = require("page-mod"); var mystyle = ..
我正在尝试在我的 Firefox 扩展中动态创建一个全局函数: window.performAction= function() { ... }; 我现在知道窗口是由 XrayWrapper 问题包裹
我尝试在页面上注入(inject)内容脚本并使用 console.log("starting addon"); pageMod.PageMod({ include: "*",//tempopa
我正在开发用户脚本的 Firefox Addon 版本。使用 page-mod 库,插件语法非常简单。例如: var data = require("self").data; var pageMod
我正在使用addon-sdk。我有一个小部件,单击该小部件后我想对网站执行一些操作(无论是修改页面还是读取深层 DOM)。 这是我读完后的想法https://developer.mozilla.org
我正在开发用户脚本的 Firefox Addon 版本。使用 page-mod 库,插件语法非常简单。例如: var data = require("self").data; var pageMod
我正在使用 toolbar button 制作一个 Firefox 插件由 Erik Vold 编写,我想知道当用户按下工具栏中的按钮时如何启动和停止 pageMod。那有可能吗?我尝试使用此方法注入
我正在使用 Firefox Add-on SDK 将 Chrome 扩展移植到 Firefox。 扩展包含一个连接到 toolbar button 的面板。 (相当于 Chrome 的 popup.h
找到干净的解决方案 我找到了一个非常干净的解决方案,它确实使整个问题变得毫无意义,而且当我问这个问题时我确信它存在......我太无知了,也去寻找它。 在 PageMod 构造函数中使用 attach
我正在尝试使用 pageMod 将图像.prepend()添加到每个谷歌搜索结果链接中。它适用于第一个结果页面,但在加载其他页面或编辑搜索词时效果不佳。这是因为我的脚本是在页面末尾加载的,动态内容更改
我无法在我的插件和附加脚本之间进行通信。 PageMod 的附加事件有效,但它不会将我的 getElements 事件发送到我的列表 getter 。如何正确使用port.emit方法?谢谢! ind
我正在开发一个 Firefox 扩展项目,该项目要求我使用 TAB 键切换页面上的所有链接、提取其 URL、获取其源代码并解析它。 目前,我可以使用 TAB 键通过以下方式切换页面以获取其 URL:
我正在构建一个与 youtube 网站交互的小型插件。为了在页面内注入(inject)自定义脚本,我使用方便的 page-mod像这样: var pageMod = require("sdk/page
我正在尝试基于 page-mod 创建新的 Firefox 扩展我使用了执行js文件的代码 var pageMod = require('sdk/page-mod'); var data = re
我在尝试从 Firefox 插件上下文覆盖 XMLHttpRequest 时遇到了一些麻烦。 我想重写此函数的原因是我想知道何时发出某个请求以触发我的事件之一。 我当前使用的main.js: pa
我在 main.js 中使用以下代码将内容脚本添加到 example.com 上的页面: var self = require("sdk/self"); var pageMod = require("
我正在使用 FF 44.0a2 Developer Edition 和 Firefox Addon SDK 制作 Firefox 插件。我使用 pageMod 内容脚本将 AngularJS 应用程序
我是一名优秀的程序员,十分优秀!