javascript <объект> имеет #document child в DOM-инспекторе, но имеет childElementCount = 0

0

Я пытаюсь объединить доказательство концепции вместе и иметь следующий примерный фрагмент кода...

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).

Спасибо за любую помощь.

Теги:
dom

1 ответ

1
Лучший ответ

Если я правильно понимаю, <object> который вы включаете, имеет другой домен, который является вашим основным кодом, и вы становитесь жертвой политики одинакового происхождения. Вы не можете получить доступ к другому домену из браузера, если вы не можете отредактировать другой домен и настроить CORS или запустить Chrome с параметром --disable-web-security.

  • 0
    Спасибо за вашу помощь, Денис, но я могу видеть все необработанное содержимое json, полученное с нашего сервера Jenkins, на странице <div>, которая содержит <object>, я просто не могу понять, как получить к ней доступ в javascript , Я буду читать ваши предложения, ура.
  • 0
    Спасибо Денис - после того, как я еще два дня ударился головой об SOPolicy, я наконец сдался. Без доступа к другому домену и --disable-web-security ничего не изменилось, я смирился с тем, что это за мной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню