2011-05-10 11 views
5

Estoy usando PHP y un comando ajax para tomar todo el contenido HTML de una página web externa (a través del comando PHP file_get_contents()) y pasar ese HTML a una variable de JavaScript. Una vez que tengo los contenidos HTML de la página almacenados en una variable, ¿puedo usar jQuery para interactuar con el contenido de esa variable, de la misma manera que jQuery normalmente interactúa con el DOM? En este ejemplo, estoy tratando de buscar la existencia de ciertos elementos HTML (etiquetas <div> y <script>) con atributos de ID específicos. ¿Alguien puede sugerir cómo puedo lograr esto?¿Puede jQuery analizar HTML almacenado en una variable?

+0

Solo para aclarar, quiero usar jQuery para extraer los datos * de * la variable que contiene los contenidos HTML de la página web externa. – jake

Respuesta

12

Si te entiendo correctamente, deberías poder pasar la variable a la función jQuery y trabajar en consecuencia.

Un ejemplo rápido con .filter():

$(myHtml).filter('#someid').doStuff(); 
4

sólo tiene que pasar como una cadena al constructor jQuery.

var foo = jQuery('<p><b>asd</b><i>test</i></p>'). 
alert(foo.find('i').text()); 
0

Sí. Y aunque eso no esté disponible, podrías hacer un div invisible y luego analizarlo allí.

1

Incluso puede usar JS nativo para hacer esto. En este caso, añadir el nuevo HTML a un div oculto mediante el uso de su propiedad innerHTML así:

document.getElementById('hidden_div_id').innerHTML = myHTML; 

Una vez que se añade el nuevo HTML, se puede caminar a través de nodos utilizando cualquier método que desee.

0

Simplemente inyéctelo en un div oculto y manipule lo que necesita de allí.

var myHTML;//variable with html from php 

var $hiddenDIV = $('<div></div>').hide().appendTo('body').html(myHTML); 
/*Now you can traverse the contents of $hiddenDIV. 
* If you need to get the contents back: 
*/ 
var newHTML = $hiddenDIV.html(); 
+0

Si lo hiciera, ¿cómo evitaría que se ejecutara el javascript del HTML de la página web externa? – jake

+0

Bueno, podrías eliminar el javascript del html y almacenarlo en otra variable, o si no necesitas el javascript para tus propósitos, entonces podrías eliminarlo por completo. Avíseme si necesita ayuda para escribir ese guión. – UpHelix

+0

@jake - sin embargo, este enfoque podría ser una exageración. Usaría el enfoque de BoltClock. – UpHelix

Cuestiones relacionadas