2009-10-26 9 views
5

la divulgation complète que je ne sais pas avec Javascript, je suis en train d'obtenir ce Javascript:JavaScript bookmarklet et encodage URL

javascript:location = 'http://validator.w3.org/check?uri=' +escape(location)&doctype=Inline&charset=detect+automatically&ss=1&group=0&user-agent=W3C_Validator/1.654'; 

pour travailler comme un bookmarklet pour envoyer une URL de ce format:

http://validator.w3.org/check?uri=http://www.wordpress.org&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.654 

au valiateur W3C.

Je suis l'URL codant le Javascript avec this encoder, mais bien sûr, je fais quelque chose de mal, soit dans mon Javascript ou dans le processus de l'encodage.

Quelqu'un a-t-il des idées en particulier ou en général sur les bookmarklets Javascript et l'encodage d'URL? Merci.

Répondre

5

Deux erreurs:

  1. Vous devez accéder au membre "href" de l'objet de l'emplacement:

    document.location. href = http://foo.com

  2. Votre JavaScript invalide:

    javascript: location = 'http://validator.w3.org/check?uri=' + escape (emplacement) SIGNE ET QUOTE MANQUANTES ICI & doctype = Inline & charset = détecter + automatiquement & ss = 1 & groupe = 0 & agent-utilisateur = W3C_Validator/1.654 ';

Je recommande d'utiliser ceci:

javascript:(function(){window.location.href='http://validator.w3.org/check?uri='+escape(window.location.href)+'&doctype=Inline&charset=detect+automatically&ss=1&group=0&user-agent=W3C_Validator/1.654';})() 
+1

Merci pour l'aide. Je me suis dit que j'avais au moins quelques erreurs. Ce que j'ai fini par cela fonctionne est la suivante: 'javascript: (function() {window.location.href = 'http: //validator.w3.org/check? Uri =' + escape (window.location) + '& doctype = Inline & ss = 1 & groupe = 0 & user-agent = W3C_Validator/1.654';})() ' Je devais revenir à l'API du W3C et découvrir ce que je faisais de mal avec le format de l'URL de la requête en termes du jeu de caractères de la page à vérifier. – markratledge

+0

'window.location.href = http: // foo.com' n'est pas nécessaire. 'location = http: // foo.com' fonctionne très bien. –