0

我有两个名为index.htmlvideo.html的 html 文件

video.html包含如下编码:

<div id="video">
<iframe src="http://www.youtube.com/embed/tJFUqjsBGU4?html5=1" width=500 height=500></iframe>
</div>

我希望从 index.html 的 video.html 页面中抓取上述代码

我不能使用任何后端编码,如 php 或 .net

有没有办法使用 Ajax?

4

5 回答 5

1

当然,发送一个ajax调用。

$.ajax({
url: 'video.html',
success: function(data) {
    data=$(data).find('div#video');
   //do something

 }
});
于 2013-06-21T12:47:41.680 回答
1

是的,这是 ajax 的完美用例。当您$.ajax()向 video.html 页面发出请求时,您可以像处理现有 DOM 一样处理响应。

例如,您可以通过以下方式指定 URI 来启动请求:

$.ajax({
    url: 'video.html'
})

您要确保请求成功。.done幸运的是,jQuery 会通过回调为你处理这个问题:

$.ajax({
  url: "video.html",
}).done(function ( data ) {});

现在只需以data类似于使用任何其他 jQuery 对象的方式来使用您的对象。我会推荐这种.find()方法。

$.ajax({
  url: "video.html",
}).done(function ( data ) {

    $(data).find('#video'));
  }
});
于 2013-06-21T12:50:34.053 回答
1

既然您提到了爬网,我认为可能存在多个页面。下面从一组 url 加载页面,并将成功的加载存储到结果中。complete它会在每次加载(在successor之后调用)时递减剩余Urls(这对于更新进度条很有用error),并且可以在处理完所有页面后调用方法(!remainingUrls)

如果这是矫枉过正,只需使用该$.ajax部分并替换myUrls[i]video.html. 我之所以选择type唯一,是因为我遇到了另一个脚本将 ajax 的默认类型更改为 POST 的情况。如果您正在加载 php 或 aspx 之类的动态页面,那么cache如果您要在每个会话中多次调用此属性,该属性也可能会有所帮助。

    var myUrls = ['video1.html', 'video2.html', 'fail.html'],
        results = [],
        remainingUrls;


    $(document).ready(function () {
        remainingUrls = myUrls.length;
        for (var i = 0, il = myUrls.length; i < il; i++) {
            $.ajax({
                url: myUrls[i],
                type: 'get', // somebody might override ajax defaults
                cache: 'false', // only if you're getting dynamic pages
                success: function (data) {
                    console.log('success');
                    results.push(data);
                },
                error: function () {
                    console.log('fail');
                },
                complete: function() {
                    remainingUrls--;
                    if (!remainingUrls) {
                        // handle completed crawl
                        console.log('done');
                    }
                }
            });
        }
    });
于 2013-06-21T12:58:21.777 回答
1

试试这个...

$.ajax({
url: 'video.html',
success: function(data) {
    mitem=$(data).filter('#video');
    $(selector).html(mitem); //then put the video element into an html selector that is on your page.
 }
});
于 2013-06-21T12:59:38.953 回答
0

未经测试,但应该与此类似:https ://stackoverflow.com/a/3535356/1059828

var xhr= new XMLHttpRequest();
xhr.open('GET', 'index.html', true);
xhr.onreadystatechange= function() {
    if (this.readyState!==4) return;
    if (this.status!==200) return; // or whatever error handling you want
    document.getElementsByTagName('html').innerHTML= this.responseText;
};
xhr.send();
于 2013-06-21T12:51:41.297 回答