2017-06-26 2 views
0

J'essaie de créer un bookmarklet, qui capture l'URL de la page actuelle, où l'utilisateur est, met cette URL dans un champ de texte d'un formulaire sur une page, puis soumet le formulaire par pratiquement en appuyant sur le bouton soumettre.Soumettre le bouton avec entrer une URL

Avec le code ci-dessous je reçois l'url de la page en cours, rendez-vous sur le site avec url http://example.com/?url=http://www.url-of-the-current-page, remplissez l'url http://www.url-of-the-current-page dans le champ texte de la forme, mais la forme elle-même reste insoumis:

javascript:(function(){ window.open('http://example.com/?url='+encodeURIComponent(location.href))})(); 

Mais comment puis-je soumettre le bouton de formulaire? Toute la forme ressemble à:

<form ng-submit="launchTest()" class="ng-pristine ng-valid"> 
<input type="text" name="url" ng-model="url"> 
<input type="submit" value="Launch test" class="launchBtn" ng-class="{disabled: !url}"> 
</form> 

J'ai essayé deux variantes - et a échoué: dans les deux variantes je reste sur http://example.com?url=http://www.url-of-the-current-page:

javascript:(function(){ window.open('http://example.com/?url='+encodeURIComponent(location.href));document.forms[0].submit()})(); 

javascript:(function(){ window.open('http://example.com/?url='+encodeURIComponent(location.href));document.forms[this.form.id].submit()})(); 
+0

Le formulaire est dans la fenêtre pop-up. sauf si la page est sur le même domaine que le JavaScript situé sur. , ça n'arrivera pas. – epascarello

+0

Le formulaire utilise 'method =" GET "', puisqu'il s'agit de la valeur par défaut. Vous n'avez pas besoin de soumettre le formulaire, ouvrez simplement la même URL que le formulaire ouvrirait. Ce qui devrait être ce que votre premier morceau de code fait. – Barmar

+0

@Barmar en utilisant le premier bit de code (en commençant le bookmarklet avec elle) je vais sur le site avec l'URL 'http://example.com/?url=http://www.url-of-the-current-page ', l'url' http: // www.url-de-la-current-page' est rempli dans le champ de texte du formulaire, mais le formulaire lui-même n'est pas soumis. –

Répondre

1

(Posté le nom de l'OP).

J'ai contacté le propriétaire du site, où je voulais courir mon bookmarklet - dit-il, mon bookmarklet est correct, mais pour soumettre la forme l'URL doit contenir un paramètre spécial, comme &run=1. Avec ce paramètre, chaque bookmarklet mentionné dans ce thread fonctionne (works signifie non seulement ouvrir un nouvel onglet et entrer l'URL, mais aussi soumettre le formulaire). Le bookmarklet de travail que je vais utiliser est:

javascript:(function(){var win=window.open('http://example.com?url='+encodeURIComponent(window.location.href)+'&run=1','_blank');win.focus();})()