Je sais que JavaScript peut ouvrir un lien dans une nouvelle fenêtre mais est-il possible d'ouvrir une page Web sans l'ouvrir dans une fenêtre ou l'afficher à l'utilisateur? Ce que je veux faire, c'est analyser cette page Web pour du texte et l'utiliser comme variables.
Est-ce possible sans toute aide des langues côté serveur? Dans l'affirmative, veuillez m'envoyer dans une direction où je peux y parvenir.
Merci a tous
Vous pouvez utiliser un objet XMLHttpRequest pour ce faire. Voici un exemple simple
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mydomain.com/', false);
req.send(null);
if(req.status == 200)
dump(req.responseText);
Une fois chargé, vous pouvez effectuer votre analyse/scraping en utilisant expressions régulières javascript sur le membre req.responseText.
En pratique, vous devez faire un peu plus pour obtenir l'objet XMLHttpRequest de manière multiplateforme, par exemple:
var ua = navigator.userAgent.toLowerCase();
if (!window.ActiveXObject)
req = new XMLHttpRequest();
else if (ua.indexOf('msie 5') == -1)
req = new ActiveXObject("Msxml2.XMLHTTP");
else
req = new ActiveXObject("Microsoft.XMLHTTP");
Alternativement, vous pouvez vous épargner toute la peine et utiliser simplement une bibliothèque comme jQuery ou Prototype pour prendre soin de cela pour vous.
Notez qu'en raison de la même politique d'origine , la page que vous demandez doit provenir du même domaine que la page faisant la demande. Si vous souhaitez demander une page distante, vous devrez le proxy via un script côté serveur.
Une autre solution possible consiste à utiliser Flash pour effectuer la demande, ce qui autorise les demandes interdomaines si le site cible accorde l'autorisation avec un fichier crossdomain.xml correctement configuré.
Voici un article de Nice sur le sujet de la politique de même origine:
Quelle que soit l'origine est une bibliothèque open source qui vous permet d'utiliser purement Javascript pour faire du grattage. Il résout également le problème de "même origine de domaine". http://www.wwhatorigin.org/
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
alert(data.contents);
});
Vous utiliseriez AJAX. Cela ferait une demande Get à l'URL en question et retournerait la réponse HTML. Jquery rend cela très facile, par ex.
$.get("test.php");
Andrew
Vous pouvez ouvrir la nouvelle fenêtre dans un iframe:
http://www.w3schools.com/TAGS/tag_iframe.asp
Notez cependant que l'accès Javascript est limité si le site que vous ouvrez provient d'une URL différente. C'est pour empêcher les attaques de script intersite: