使用javascript / jQuery加载iFrame的跨域问题

时间:2013-03-01 07:12:53

标签: javascript jquery iframe cross-domain

我有一个脚本从txt文件读取URL,然后将每个URL放入一个iframe作为源,一个接一个地加载具有新源的帧。我这样做是为了计算列表中每个网址的加载时间。这是我的代码:

$.get("test.txt", function (data) {
        var array = data.split(/\r\n|\r|\n/) 
        var beforeLoad = (new Date()).getTime();    
        var loadTimes = [];
            var beforeTimes = [];               
        $('#frame_id').on('load', function () {                                 
            beforeTimes.push(beforeLoad);
            loadTimes.push((new Date()).getTime()); 
            $('#frame_id').attr('src', array.pop());
                $.each(loadTimes, function (index, value) { 
                    var result = (value - beforeTimes[index]) / 1000;
                        if (result < 0) {
                            result = result * (-1);
                        }   
                    $("#loadingtime" + index).html(result);
                    beforeLoad = value;
                });
        }).attr('src', array.pop());
    });

我的问题是,当我获得一个具有iframe保护(相同来源)的URL时,我的脚本崩溃并且它不会显示任何加载时间值。经过大量研究后,我发现了一种使用AnyOrigin网站将“同源”URL加载到框架中的方法。我测试了该网站的代码并且有效:

    

    

<script type="text/javascript">
            $.getJSON("http://anyorigin.com/get?url="+"google.lt"+"&callback=?", function(data) {
                var iframe = $("#frame_id")[0];
                var doc = iframe.document;
                if(iframe.contentDocument) {
                    doc = iframe.contentDocument;
                } else if(iframe.contentWindow) {
                    doc = iframe.contentWindow.document;
                }
                doc.open();
                doc.writeln(data.contents);
                doc.close();
            });
</script>
        <iframe  id="frame_id"></iframe>
</body>
</html>

我想将我的代码与AnyOrigin中的代码组合在一起,因此它会从我的.txt文件中加载许多网址,获取每个框架的加载时间,并绕过“同源”的东西,任何人都可以帮助我?

0 个答案:

没有答案