2

我正在编写一个 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()))。在每个站点中至少有 1 个类,.label因此应该有一个输出。Sites Basic、Relations、Philosophy、娱乐总是运行良好。但是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);

脚本.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时,它总是有效!

4

1 回答 1

0

这可能是一个竞争条件(即 facebook 在 ready 事件之后的某个时间加载您正在寻找的元素)

于 2013-07-06T20:58:57.093 回答