Мне нужно вставить на мою страницу фрагменты HTML из внешнего URL, и я написал следующую простую функцию для решения междоменной проблемы с использованием прокси-сервера Yahoo:
function crossDomainAjaxLoad(url, selector) {
container = $('#container');
if (url.match('^http')) {
$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + encodeURIComponent(url) + "%22&format=xml'&callback=?", function (data) {
if (data.results[0]) {
var data = filterData(data.results[0]);
container.html(data);
} else {
var errormsg = '<p>Error: could not load the page.</p>';
container.html(errormsg);
}
});
} else {
container.load(url, function () {});
}
}
function filterData(data) {
data = data.replace(/<?\/body[^>]*>/g, '');
data = data.replace(/[\r|\n]+/g, '');
data = data.replace(/<--[\S\s]*?-->/g, '');
data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g, '');
data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g, '');
data = data.replace(/<script.*\/>/, '');
return data;
}
Это работает отлично, но я обнаружил, чтонекоторые домены отклоняют запросы YQL, и я могу представить, что с этим подходом тоже есть проблемы с безопасностью.
Поэтому мне было интересно, есть ли междоменное решение для .load () в jQuery без использования YQL.