Chrome 中的用户脚本,跨源通信

发布于 2024-12-18 23:06:28 字数 98 浏览 1 评论 0 原文

Chrome有自己的Greasemonkey,不过它有很多限制。其中之一是它的 xmlhttprequest 不支持跨源。那么有没有什么办法可以让它发挥作用呢?

谢谢

Chrome has its own Greasemonkey, anyway it has many limit. One of them is that its xmlhttprequest doen't support Cross-Origin. So is there any way to make it works?

thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那小子欠揍 2024-12-25 23:06:28

如果您还希望脚本对 Opera 友好,您仍然无法使用 GM_xmlhttpRequest。但是,使用 YQL 和 jQuery,您可以这样做:

var getCrossDomain = function (url, callback, maxage) {
        if (typeof (url) !== 'undefined') {
            var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&diagnostics=false&format=xml&callback=?&_maxage=';
            if (typeof (maxage) === 'undefined') {
                yql += '10000'; // Value is in ms
            }
            $.getJSON(yql, function (data) {
                if (typeof (callbackX) === 'function') {
                    callback(data.results[0]);
                }
            }).fail(function (jqXHR, textStatus, errorThrown) {
                // Some code here to handle a failed request
            });
        }
    };

阅读 http://www.yqlblog.net/blog/2010/03/12/avoiding-rate-limits-and-getting-banned-in-yql-and-pipes-caching-is-your- friend/ 了解 maxage 参数的信息。

If you also want the script to be Opera-friendly, you still won't be able to use GM_xmlhttpRequest. However, using YQL and jQuery, you can do it like this:

var getCrossDomain = function (url, callback, maxage) {
        if (typeof (url) !== 'undefined') {
            var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&diagnostics=false&format=xml&callback=?&_maxage=';
            if (typeof (maxage) === 'undefined') {
                yql += '10000'; // Value is in ms
            }
            $.getJSON(yql, function (data) {
                if (typeof (callbackX) === 'function') {
                    callback(data.results[0]);
                }
            }).fail(function (jqXHR, textStatus, errorThrown) {
                // Some code here to handle a failed request
            });
        }
    };

Read http://www.yqlblog.net/blog/2010/03/12/avoiding-rate-limits-and-getting-banned-in-yql-and-pipes-caching-is-your-friend/ for info on the maxage parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文