2009-10-12 3 views
5

Скажите, что вам нужен скрипт Greasemonkey, который будет совместим с Safari и Chrome.Совместимость скриптов Greasemonkey с Firefox, Safari, Opera и chrome (onload event)

Принимая во внимание, что в Firefox скрипты Greasemonkey запускаются только тогда, когда DOM готов. Chrome, Safari и Opera, похоже, запускают сценарии Greasemonkey до того, как DOM готов.

Так что я ищу решение, которое будет запускать только прослушиватель на странице, ожидая события загрузки/готовности DOM и получения этого события, а затем запустить остальную часть скрипта. Если браузер, который они используют, это Chrome, Safari или Opera. Если они используют Firefox, просто запустите сценарий сразу и не потрудитесь с прослушивателем событий.

Как это обозначить?

@NV

Благодаря NV, вы знаете, если этот сценарий также Google Chrome совместимы?

Будет ли код

(function(){ 

    // Code here run after 'load' event in all browsers. 

})(); 

также работать на DOM готовы в Google Chrome?

ответ

-1

Я полагаю, вы можете посмотреть, как JavaScript-библиотеки, такие как JQuery, вытащить это. Вероятно, это был бы слишком большой вес, чтобы использовать его, но они уже решили эту проблему.

1

Прежде всего, обратите внимание на UserJS. Он работает на Greasemonkey, Opera и Safari Greasekit.

Если вы хотите запустить код после загрузки страницы, прослушиватели событий вообще не нужны.

... safari + opera, похоже, запускает скрипты gm перед тем, как дом готов.

Нет. На самом деле это сложнее. Опера имеет greasemokey compatible mode. Все сценарии, названные yada-yada .user .js работают в совместимом режиме и запускают после DOM готов.

ПРИМЕЧАНИЕ: заверните свой код в анонимную функцию, чтобы предотвратить утечку переменных в глобальный объект окна (это происходит в Opera).

(function(){ 

    // Some code 

})(); 

Safari Greasekit работает как Firefox Greasemonkey в этом случае.

+2

Простое обертывание кода в анонимной функции НЕ задерживает выполнение до момента события загрузки. Первая часть вышеприведенного ответа, таким образом, ошибочна и вводит в заблуждение. – hallvors

+0

hallvors, вы правы! Возможно, я не говорю четко. Я обновил ответ. – NVI

+0

Я обозначил ответ как сообщество wiki. Таким образом, вы можете редактировать. – NVI

0

Я взял уменьшенную JQuery и скопировать вставить его в мой userscript, а затем сделал классический

$(document).ready(function() { 
     // Put all your jQuery goodness in here. 
    }); 

который имеет дополнительный бонус дает вам Jquery, все заключенное в функции, указанной в другом вопросе:

(function(){ 

    // Some code. 

})(); 

вы можете использовать Greasemonkey материал для импорта JQuery через URL в верхней части, но это Greasemonkey специфический, Chrome/Opera и т.д., не будут совместимы, если вы делаете это таким образом.