2010-06-18 7 views
1

Il y a beaucoup de questions ici à propos de Greasemonkey, mais je n'ai rien vu de directement lié à ma question.Modifier les paramètres d'une fonction Javascript en utilisant GreaseMonkey

Je suis sur un site Web qui utilise un contrôle d'éditeur de texte, et c'est vraiment embêtant qu'ils n'autorisent pas le redimensionnement horizontal (seulement vertical). Donc, si vous utilisez un projecteur cheapo qui ne supporte que 1024x768, le texte sort de l'écran et vous ne pouvez rien y faire.

j'ai regardé à la source de la page, et trouve la section de code que je veux Greasemonkey modifier:

<script type="text/javascript"> 
// TinyMCE instance type: CD_TinyMCE 
tinyMCE.init({ 
    convert_urls : "", 
    mode : "specific_textareas", 
    editor_selector : "rte", 
    theme : "advanced", 
    theme_advanced_toolbar_location : "top", 
    theme_advanced_toolbar_align : "left", 
    theme_advanced_statusbar_location : "bottom", 
    theme_advanced_resizing : true, 
    **theme_advanced_resize_horizontal : false**, 
... 

Je veux juste changer la valeur true en gras. J'ai essayé d'approcher ceci la manière brute de force et de remplacer le texte de cette façon:

function allowHorizontalResize() { 
    var search_string = "theme_advanced_resize_horizontal : false"; 
    var replace_string = "theme_advanced_resize_horizontal : true"; 
    var doc_text = document.body.innerHTML; 
    document.body.innerHTML = doc_text.replace(search_string, replace_string); 
} 

... mais cela ne fonctionne pas. Cependant, je connais la recherche de base et le remplacement de la partie parce que je peux utiliser ce script pour remplacer le texte dans l'éditeur - je ne peux tout simplement pas changer le code javascript qui initialise l'éditeur de texte. Est-ce que quelqu'un peut expliquer ce que je fais mal? Est-ce seulement possible?

Répondre

2

Essayez d'abord l'approche directe simple. Votre script Greasemonkey pourrait être aussi simple que:

GM_addStyle ("#content_tbl {width: 900px !important;}"); 

- qui fonctionne sur une fenêtre de TinyMCE par défaut. La modification du code source javascript ne fonctionnera probablement pas facilement. Mais, le diable est dans les détails.

Fournissez un lien vers la page ou pastebin le code complet.

+0

il y a trop d'informations confidentielles dans la source de la page pour rechercher et remplacer, malheureusement Cependant, je vous remercie pour le conseil sur la modification de la largeur de la fenêtre de l'éditeur.Cela a totalement fonctionné! – Dave

+0

Si cela a fonctionné alors vous pourriez envisager [ écrire un style utilisateur] (http: // userstyles.org/help/coding) au lieu d'un script utilisateur, ce qui affectera la zone de texte immédiatement, au lieu de la fin du chargement de la page. – erikvold

1

Non, le script sera déjà exécuté lorsque vous appliquez la fonction. Vous devrez obtenir l'élément de l'éditeur de texte et appliquer les propriétés manuellement (en supposant qu'il s'agit d'un élément).

Un lien me rendrait plus utile.

+0

ah, c'est pourquoi ... Je vais essayer, mais quel est l'élément de l'éditeur de texte? Je suppose que vous dites que je dois récupérer tous les éléments du script à partir de document.getElementsByTagName(), puis le modifier à ce moment-là? Je ne peux pas vous donner de lien car le site nécessite un login. – Dave

+0

Je suppose que même l'obtention de l'élément 'script' via GM est encore trop tard. J'ai vérifié avec 'alert' que j'obtenais le javascript correctement, mais l'éditeur de texte est toujours apparu quand j'ai essayé de mettre sa propriété' innerHTML' à "". :( – Dave

+1

pour réitérer, changer le innerHTML d'un script ne fera rien, sauf si vous voulez réexécuter le script entier Je voulais dire que vous devez obtenir l'élément qui "ne se redimensionne que verticalement", et appliquez le CSS qui le redimensionne horizontalement – tcooc

Questions connexes