在加载iframe时使用try块来捕获'sameorigin'错误

时间:2013-03-05 06:09:02

标签: javascript

获得一个脚本,该脚本从txt文件中获取URL并将它们一个接一个地放入iframe中。继承剧本:

 <script type="text/javascript">
           $.get("imones.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());
            });
        </script>

我遇到一个问题,当其中一个网址具有“相同来源”保护(例如google.com)时,我的问题是,一旦开始加载谷歌它就会加载任何其他框架(它会卡住)。我被告知要尝试使用try catch块,但我不知道如何。我如何使用try catch来避免“同源”网址(请注意,我不希望它们加载,我希望它们跳过)。

1 个答案:

答案 0 :(得分:0)

我猜这里

<script type="text/javascript">
           $.get("imones.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()); 
                    try {
                        $('#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;
                        });
                    } catch(ex) {}
                }).attr('src', array.pop());
            });
        </script>

这将包装您实际将url推入“src”属性的位置,从而触发请求。