2010-04-30 6 views
4

Puis-je appeler function() de mon Greasemonkey personnalisé à partir de ma page?appeler les fonctions Greasemonkey à partir de la page Web

Par exemple,

J'ai créé un script GM qui contient la fonction do_this(). Je veux que my-web-site.com appelle la fonction do_this(). Mais je ne peux pas.

Je sais, je peux en faisant un safeWindow.do_this() mais en m'empêchant moi d'appeler GM_xmlhttpRequest().

Des idées?

Répondre

0

Non, les fonctions GM_ * ne sont pas accessibles à partir de la page Web.

3

Je viens d'avoir le même problème. Vous pouvez trouver de bonnes informations here in the wiki. Je suggère d'utiliser l'injection de script pour insérer le code nécessaire dans le document. De cette façon, il fonctionnera comme dans le code source de la page. Vous ne pouvez pas non plus utiliser les fonctions GM_ mais vous pouvez utiliser une combinaison d'injection de script (pour récupérer une variable par exemple) et de script greasemonkey classique avec toutes les fonctions GM_ (Par exemple, vous pouvez utiliser les variables que vous lisez et POST avec GM_xmlhttpRequest()).

En outre, des techniques telles que l'injection de script ont plusieurs avantages liés à la sécurité par rapport à la sécurité non sécurisée.

J'espère que cela aide.

6

ici l'exemple que le travail, tout d'abord créer l'élément puis addEventListener

// ==UserScript== 
// @name   GM addEventListener Function Test 
// @namespace  ewwink.com 
// @description GM addEventListener Function Test 
// @include  http://* 
// ==/UserScript== 

document.body.innerHTML+='<input type="image" id="alertMeID" onclick="do_this()" style="position:fixed;top:0;left:0" src="http://i55.tinypic.com/2nly5wz.gif" />'; 

document.getElementById('alertMeID').addEventListener('click', do_this, false); 

function do_this(){ 
    alert('hello World!, today is: '+new Date()) 
} 
+0

Merci, qui fonctionne et qui correspond au problème posé dans la question. – Dereckson

Questions connexes