使用JSONP从JavaScript网页获取源代码

时间:2016-07-22 09:03:18

标签: javascript jquery ajax dom jsonp

我试图使用JSONP将源代码形成一个URL网页。 这是代码:

<script type="text/javascript">
var your_url = '';

$(document).ready(function(){
jQuery.ajax = (function(_ajax){

var protocol = location.protocol,
    hostname = location.hostname,
    exRegex = RegExp(protocol + '//' + hostname),
    YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
    query = 'select * from html where url="{URL}" and xpath="*"';

function isExternal(url) {
    return !exRegex.test(url) && /:\/\//.test(url);
}

return function(o) {

    var url = o.url;

    if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
        // Manipulate options so that JSONP-x request is made to YQL

        o.url = YQL;
        o.dataType = 'json';

        o.data = {
            q: query.replace(
                '{URL}',
                url + (o.data ?
                    (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
                : '')
            ),
            format: 'xml'
        };

        // Since it's a JSONP request
        // complete === success
        if (!o.success && o.complete) {
            o.success = o.complete;
            delete o.complete;
        }

        o.success = (function(_success){
            return function(data) {

                if (_success) {
                    // Fake XHR callback.
                    _success.call(this, {
                        responseText: data.results[0]
                            // YQL screws with <script>s
                            // Get rid of them
                            .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
                    }, 'success');
                }

            };
        })(o.success);

    }

    return _ajax.apply(this, arguments);

};

})(jQuery.ajax);

$.ajax({
    url: your_url,
    type: 'GET',
    success: function(res) {
         var text = res.responseText;
         //document.getElementById("contenuto").innerHTML = text;

    alert(text);
}
});


});
</script>

我在网址上打印了所有源代码的提醒。

alert(text);

首先,如何知道打印的代码是否是页面的所有Web代码? 如果我试着这样做

document.getElementById("contenuto").innerHTML = text;

这是结果:

\ \ <'+'/ins>\ \ \ '); } ]]>

我尝试使用HTML DOM打印一个元素,这样做

 document.getElementById("contenuto").innerHTML = text;
 var elem = text.getElementById("strip_adv").innerHTML;
 document.getElementById("contenuto_1").innerHTML = elem;

}

但这是JS控制台上的错误:

text.getElementById is not a function

回顾: 我想使用JSONP从URL获取网页的源代码。 我会使用返回文本中的HTML DOM,只保留我需要的元素/类。我是JS的新手,我试图了解更多&amp; amp;更多关于JS。

1 个答案:

答案 0 :(得分:0)

getElementById()仅存在于文档对象中。您要做的是尝试从字符串对象访问getElementId。

相反我建议在iframe中插入返回的html字符串,你可以访问iframe中的元素否则你可以在你的应用程序中使用某种html解析器。

假设您在hrame中插入html字符串

后,html看起来像这样
<body>
    <iframe id="one">
      <html>
        <body> <h1 id="strip_adv">Heading</h1> </body>
      </html
    </iframe>
</body>

function iframeObj( frameEle ) {
    return frameEle.contentWindow
        ? frameEle.contentWindow.document
        : frameEle.contentDocument
}

var element = iframeObj( document.getElementById('strip_adv') );