繁体   English   中英

跨域请求-执行所有脚本的页面内容

[英]Cross Domain Request - page content with all scripts executed

标题很好地描述了我的问题。

我尝试执行跨域请求,在该请求中首先执行加载的内容。

因此,我有www.xyz.com页面,该页面通过ajax加载了一些页面内容(例如实时行情自动收录器),我想在自己的文件中使用此内容。 由于Php无法执行任何操作,因此我想执行jquery get请求,但无法弄清楚如何同时获取两者,跨域请求和执行的javascript。

提前致谢。

更新:

例如,我尝试了以下代码:

function requestCrossDomain( site, callback ) {

    if ( !site ) {
        alert('No site was passed.');
        return false;
    }

    var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=?';

    $.getJSON( yql, cbFunc );

    function cbFunc(data) {

    if ( data.results[0] ) {

        data = data.results[0];

        if ( typeof callback === 'function') {
            callback(data);
        }
    }
    else throw new Error('Nothing returned from getJSON.');
    }
}

requestCrossDomain('http://www.google.com', function(results) {
    //htmlcode = eval(results); 
    htmlcode = results; 
    $('#container').html(htmlcode);
});

如果您绝对必须使用AJAX来抓取文件,然后尝试执行该文件,则可以使用以下代码进行操作:

eval(ajaxResponseText);

执行此操作的另一种方法是利用data URI方案从XHR生成标签。

var script = document.createElement("script")
script.src = "data:text/javascript;charset=utf8," + encodeURIComponent(ajaxResponseText);
document.body.appendChild(script);

编辑

现在有一个例子可以说明您的问题,我必须修改答案。

由于跨域攻击的普遍性和严重性,您不能在几乎所有浏览器上都使用ajax进行跨域请求而不遵守CORS规范。 跨源资源共享规范允许您向其他源发出ajax请求,只要新源允许。 如果无法正常使用,则JavaScript控制台可能是查找错误的好地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM