2017-07-15 4 views
0

J'essaie de créer un bookmarklet javascript qui publie l'URL actuelle dans mon API. Par exemple, quelque chose de similaire à ce que fait le bookmarklet Instapaper. J'ai écrit le script suivant, je l'ai passé à travers un minifier et je l'ai ajouté comme href à un tag <a> que j'utilise comme bouton. Je veux être en mesure de faire glisser cette étiquette dans la barre de favoris.Création d'un bookmarklet javascript qui POSTE l'URL actuelle

javascript: (function() { 
    var url = document.location.href 
    var uri = "http://localhost:3001/api/v1/links/bookmarklet?url=" + url + "&id=1" 

    xhr = new XMLHttpRequest(); 
    xhr.open("POST", encodeURI(uri)); 

    xhr.send(); 
}()); 

Actuellement, je suis en train de tester ce sur mon serveur local à localhost: 3001 et me présente mon application sur localhost: 3000. Si j'appuie sur le bouton alors que sur mon application (sur localhost: 3000) il fait la demande de publication mais il ajoute le script lui-même à la barre d'adresse au-dessus de l'URL actuelle.

http://localhost:3000/!function()%7Bvar%20e=%22http://localhost:3001/api/v1/links/bookmarklet?url=%22+document.location.href+%22&id=1%22;xhr=new%20XMLHttpRequest,xhr.open(%22POST%22,encodeURI(e)),xhr.send()}();

Si je fais glisser le bouton à la barre de signets et cliquez dessus d'un autre site, il redirige vers localhost: 3000 et fait la même chose. Est-ce que je manque quelque chose d'évident ici? Je ne peux pas vraiment trouver d'instructions sur le Web sur la façon de mettre en place un bookmarklet pour publier une URL en cours.

Le code HTML ressemble à ceci:

<a href='!function(){var e="http://localhost:3001/api/v1/links/bookmarklet?url="+document.location.href+"&id=1";xhr=new XMLHttpRequest,xhr.open("POST",encodeURI(e)),xhr.send()}();' id="button">post link</a> 

Les params entrants pour mon API Rails ressemblent à ce

<ActionController::Parameters {"url"=>"http://localhost:3000/!function()%7Bvar%20e=%22http://localhost:3001/api/v1/links/bookmarklet?url=%22 document.location.href %22", "id"=>"1", "xhr"=>"new%20XMLHttpRequest,xhr.open(%22POST%22,encodeURI(e)),xhr.send()}()", "format"=>:json, "controller"=>"api/v1/links", "action"=>"create_link_from_web"} permitted: false> 

Il n'affiche l'itinéraire correct dans Rails mais il est tout foiré. Merci d'avance pour vos suggestions!

+1

Votre code HTML doit être modifié avec '

Répondre