pageWorker не работает со всеми страницами в Facebook - PullRequest
2 голосов
/ 29 ноября 2011

Я пишу расширение 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 содержит параметр для считывания, но я протестировал его с console.log($('.label').text())) в файле profile_controller.js.На каждом сайте есть хотя бы 1 класс с .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);

ну и смешновывод выглядит следующим образом:

Output

Фрейнде по-немецки означает «друзья» и является правильным выводом, но только иногда !?И когда я пытаюсь, например, с http://www.facebook.com/editprofile.php?sk=basic, он работает всегда!

1 Ответ

0 голосов
/ 07 июля 2013

Это может быть состояние гонки (т. Е. Facebook загружает искомый элемент через некоторое время после события готовности)

...