我正在写一个firefox扩展来读取隐私设置。我使用PageWorkers浏览不同的网站。但是,有些正在查找,其他网站将无法打开。
function visitWebsite(url, flowURL){
var profile_website = pageWorkers.Page({
contentURL: url,
contentScriptFile: [data.url('jquery-1.6.4.js'),
flowURL,
data.url('extract_algorithm.js'),
data.url('ProfileSettings/profile_controller.js')],
contentScriptWhen: "ready"
});
//event triggers, when all profile settings were loaded from a site from profile_controller
profile_website.port.on('profile_results', function(profile_results){
add_to_all_results(profile_results);
});
}
function checkProfileSettings(){
visitWebsite("http://www.facebook.com/editprofile.php?sk=basic", data.url('ProfileSettings/Flow_Site1.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=relationships", data.url('ProfileSettings/Flow_Site2.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=eduwork", data.url('ProfileSettings/Flow_Site3.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=philosophy", data.url('ProfileSettings/Flow_Site4.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=entertainment", data.url('ProfileSettings/Flow_Site5.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=sports", data.url('ProfileSettings/Flow_Site6.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=activities", data.url('ProfileSettings/Flow_Site7.js'));
visitWebsite("http://www.facebook.com/editprofile.php?sk=contact", data.url('ProfileSettings/Flow_Site8.js'));
}
Flow_SiteX.js
包含读数的参数,但我在profile_controller.js中使用console.log($('.label').text()))
对其进行了测试。在每个站点中至少有一个.label
类,所以应该有一个输出。网站基础,关系,哲学,娱乐总是运作良好。但是,PageWorker似乎根本不打开体育或活动!?有时eduwork正在工作,有时却没有。
好吧,我不明白为什么有些网站正在运行而有些网站却没有......我只用体育运动试过了checkProfileSettings()
,因为我认为内存或其他东西已经满了,但它也没有用。 。
谢谢! :)
编辑:我写了一点测试
main.js
var data = require("self").data;
var pageWorkers = require("page-worker");
var timers = require("timers");
function TestvisitWebsite(url, flowURL){
var profile_website = pageWorkers.Page({
contentURL: url,
contentScriptFile: [data.url('jquery-1.6.4.js'),
data.url('script.js')],
contentScriptWhen: "ready"
});
}
function testcheck()
{
TestvisitWebsite("http://www.facebook.com/editprofile.php?sk=sports", "aaa");
}
var timeout = timers.setInterval(function()
{
testcheck();
}, 1000);
的script.js:
function combobox_by_name(ID_of_name){
console.log("Testoutput - " + $('select[name=audience\\[' + ID_of_name + '\\]\\[value\\]] option:selected').text());
}
combobox_by_name(129991670408857);
好吧,有趣的输出看起来像这样:
Freunde是“朋友”的德语,是正确的输出,但有时只是!?例如,当我使用http://www.facebook.com/editprofile.php?sk=basic进行尝试时,它始终有效!
答案 0 :(得分:0)
这可能是竞争条件(即facebook在准备好的事件之后加载您正在寻找的元素)