我正在尝试将概念证明混合在一起并在其中包含以下粗略的代码片段...
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>
所以我可以在检查器中查看节点的innerText中的json内容。
但是 - <object>
有childElementCount: 0
而#document有ownerDocument: null
和parentNode: null
- 所以如何才能访问<pre>
的json innerText
?
如果可能的话,我宁愿使用普通的javascript而不是jQuery(为了便于维护,如果我被卡车击中)。
这不适合公众使用,并且将在最新的浏览器(99%Chrome和Firefox)上运行。
感谢您的帮助。
答案 0 :(得分:1)
如果我理解正确,您所包含的<object>
与您的主要代码具有不同的域,并且您会成为Same-origin policy的牺牲品。
您无法通过浏览器访问其他域,除非您可以编辑其他域并设置CORS或使用--disable-web-security
选项运行Chrome。