2013-06-19 58 views
0

我正在尝试通过一组网址来设置框架的位置。到目前为止,我有什么是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属性的iframe,不location

+0

你的意思是('负载'),而不是一个,对吗?顺便说一下,我从来没有设法得到iframe的加载事件。它真的有用吗? – Christian

+1

不,我的意思是“一个”,因为我们只希望事件处理程序在每个URL更改时执行一次。 – dfsq

+0

呃,我永远不能在小提琴上工作,但经过一些调整后,我的版本才起作用! http://pastebin.com/4QHX9YgR – KevinOrr

1

你有ID帧的帧。将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'是什么?你还在'#g'上使用'#frame'吗?如果是这样,** I **应该可能更改我的原始代码,因为'#frame'更有意义。 – KevinOrr

+0

好的,这个工程。唯一不幸的是它总是等待5秒,这可能太长或太短。 – KevinOrr