2013-06-19 2 views
0

Я пытаюсь выполнить итерацию по массиву URL-адресов, чтобы установить в качестве местоположений рамки. До сих пор, что у меня есть this fiddle:Изменить расположение рамок в jQuery

var l = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
     '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', 
     '20', '21', '22', '23', '24', '25', '26', '27', '28', '29']; 

$(document).ready(function() { // Wait until body is ready to be manipulated 
    l.forEach(function (query) { // iterate through l 
     $('#g').on('load', function() { // Wait until #g is loaded 
      $('#g').attr('location', 'http://www.bing.com/search?q=' + query); // goto Bing search 
     }); 
    }); 
}); 

Когда я иду, чтобы запустить его, хотя, ничего не происходит в панели результатов. Что я делаю не так?

+0

http://jsfiddle.net/zDCqz/3/ Это работа с iframe и src attr. – jQuery00

+0

Если один ответ вам подходит, не могли бы вы пометить его как окончательное решение? – Christian

ответ

2

Попробуйте что-то вроде этого:

$(document).ready(function() { 
    var $ifr = $('#g'); 
    function load() { 
     if (l.length) { 
      $ifr.one('load', load); 
      $ifr[0].src = 'http://www.bing.com/search?q=' + l.shift(); 
     } 
    } 
    load(); 
}); 

Я думаю, вы должны изменить src атрибут фрейма, а не location.

+0

Вы имеете в виду ('load'), а не один, не так ли? ;) , кстати, мне никогда не удавалось получить событие load iframe. это действительно работает? – Christian

+1

Нет, я имел в виду 'one', потому что мы хотим, чтобы обработчик события выполнялся один раз за изменение URL. – dfsq

+0

Ну, я не мог заставить его работать в Fiddle, но после некоторой настройки я получил вашу версию для работы! http://pastebin.com/4QHX9YgR – KevinOrr

1

У вас есть рамка с id-рамкой. измените идентификатор на другое. Вы имели в виду iframe? Используйте contentWindow вместо окна. fiddle

$('#myframe')[0].contentWindow.location = 
         'http://www.bing.com/search?q=' + query; 
+0

+1 для указателя, но реализация не дожидаясь загрузки каждой страницы, она * делает * итерацию через все из них, но так быстро, что у них нет возможности загрузить. Но спасибо, что научил меня «contentWindow»! – KevinOrr

1

Ну вы должны использовать IFRAME для этого (или Object-Tag)

Как об этом?

$(function(){ 
    var l = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
    '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', 
    '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'], 
    idx = 0; 


(function(){ 
    if(idx < l.length){ 
     $('#frame').attr("src",'http://www.bing.com/search?q='+l[idx]) ; 
     idx++; 
     setTimeout(arguments.callee,5000); 
    }  

}()) 

}) 
+0

Извините, но что такое 'arguments.callee' ?. Также вы используете '# frame' для' # g'? Если это так, ** я **, вероятно, должен изменить свой исходный код, поскольку '# frame' имеет больше смысла. – KevinOrr

+0

Хорошо, это работает. Единственная неудачная вещь состоит в том, что она неизменно ждет 5 секунд, что может быть слишком длинным или слишком коротким. – KevinOrr

Смежные вопросы