2009-03-11 21 views
6

Ho un bookmarklet per reimpostare il mio router. Devo solo visitare e lasciare che la pagina finisca il caricamento, quindi il mio router inizia a reimpostare.Bookmarklet: aggiungi iframe nascosto alla pagina e carica l'url

javascript:(function(){w=window.open("http://192.168.0.1/goform/formReboot","","width=1,height=1");self.focus();window.onload=w.close();})(); 

ma si apre in una finestra popup.

La mia nuova idea è di aggiungere dinamicamente un iframe nascosto alla pagina in cui mi trovo utilizzando un bookmaklet javascript e quindi di aprire l'url nell'iframe nascosto. È possibile?

Sono aperto per un migliore suggerimento su come questo può essere fatto.

risposta

25

Un modo ancora più semplice sarebbe quella di creare un nuovo elemento IMG:

(function(){ 
    (new Image()).src = "http://192.168.0.1/goform/formReboot"; 
})(); 

Come un bookmarklet:

javascript:void((function(){(new Image()).src = "http://192.168.0.1/goform/formReboot";})()); 

O, se questo non funziona, ecco la ' creatore di iframe che hai richiesto:

(function(){ 
    var i = document.createElement('iframe'); 
    i.style.display = 'none'; 
    i.onload = function() { i.parentNode.removeChild(i); }; 
    i.src = 'http://192.168.0.1/goform/formReboot'; 
    document.body.appendChild(i); 
})(); 
+1

Perché stai usando void() intorno al codice, quando si sta già utilizzando (function() {})? –

2

Può essere fatto? Sicuro!

  1. Creare un elemento iframe, con qualunque parametri necessari
  2. inserirlo come ultimo figlio al elemento del corpo
  3. Fatto!

Ecco un esempio (tutto sarebbe andato su una sola riga):

javascript:var%20ifra=document.createElement('iframe'); 
ifra.src="http://www.chron.com"; 
ifra.setAttribute("height","230"); 
ifra.setAttribute("width","360"); 
void(document.body.appendChild(ifra));