Я пытаюсь объединить доказательство концепции вместе и иметь следующий примерный фрагмент кода...
var jenkinsBuilds = [
{url:"http://jenkins.server:8080/view/project/job/build_type1/", x:100, y:100},
{url:"http://jenkins.server:8080/view/project/job/build_type2/", x:200, y:200}
];
function createBuild(buildData) {
var divBuild = document.createElement("div");
divBuild.className = "buildNode";
divBuild.title = buildData.url;
divBuild.style.left = buildData.x + "px";
divBuild.style.top = buildData.y + "px";
backdrop.appendChild(divBuild);
var obj = document.createElement("object");
obj.onload = loadedObj;
obj.type = "text/html";
obj.data = buildData.url + "api/json?tree=builds[number]";
divBuild.appendChild(obj);
}
function loadedObj(e) {
alert(e.srcElement);
}
В предупреждении появляется [object HTMLObjectElement]
.
Я хочу получить содержимое json объекта в переменную var json =
чтобы позже выполнить JSON.parse(), но я не знаю, как получить содержимое json из объекта.
Когда я смотрю на объект в инспекторе Chrome DOM, он имеет...
<div>
L <object>
L #document
L <html>
L <head></head>
L <body>
L <pre>
"{"builds":[{"number":3431},{"number":3430},{"number":3429},{"number":3428},{"number":3427}]}"
</pre>
Поэтому я могу видеть содержимое json во внутреннем тексте узла в инспекторе.
Но - <object>
имеет childElementCount: 0
и #document имеет ownerDocument: null
и parentNode: null
- так как я могу получить доступ к <pre>
json innerText
?
Я предпочел бы использовать простой javascript, а не jQuery, если это возможно (для удобства обслуживания, если меня ударит грузовик).
Это не предназначено для публичного использования и будет запущено в последних браузерах (99% Chrome и Firefox).
Спасибо за любую помощь.
Если я правильно понимаю, <object>
который вы включаете, имеет другой домен, который является вашим основным кодом, и вы становитесь жертвой политики одинакового происхождения. Вы не можете получить доступ к другому домену из браузера, если вы не можете отредактировать другой домен и настроить CORS или запустить Chrome с параметром --disable-web-security
.