1

如果 page2 包含指定的元素,我需要更改 page1 的内容。如果我从同一页面获取 id,此代码效果很好

if (document.getElementById("page_element")) {
    var str = document.getElementById("destination").innerHTML;
    var n = str.replace("Login", "Logout");
    document.getElementById("destination").innerHTML = n;
}

但我需要检查 page2 上是否存在元素以更改 page1 的内容。

我必须改变这个

  if (document.getElementById("page1_element"))

正确的路径是page2(在我的例子中是logged.html)。我怎样才能做到这一点 ?

4

3 回答 3

2

认为这将工作...

var iframe = document.getElementById("iframeId"),
    doc = getFrameDocument(iframe);

doc.getElementById("page2_element_id"); // [DOM Element]

function getFrameDocument(iframe){
    return iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
}

return cond ? a : b方法:

if ( cond ) {
    return a;
}
else {
    return b;
}
于 2013-03-14T12:15:24.580 回答
1

我想这可能会对你有所帮助...不要对我太苛刻。这是我的第一篇文章:p

var element_change_content_page1 = "element_id_page1";
var page2_datatype = "html";
var filename_page2 = "logged.html";
var target_element_id_page2 = "element_id_page2";
var target_element_type_page2 = "div"

$.get( filename_page2 , function(response, status){
//You can also use jQuery " $.post() " Method instead of " $.get() "
//Source: http://www.w3schools.com/jquery/ajax_get.asp
var data = $('<div>' + response + '</div>');
var target_element = data.find( target_element_type_page2 + '#'+ target_element_id_page2 )[0]; //There "might" be more div elements with the same id: specify index
if(typeof target_element !== 'undefined'){
    //Page2 contains specified element
    var container = document.getElementById( element_change_content_page1 );
    container.innerHTML = "Content is changed!!!";
} else {
    //Page2 DOES NOT contain specified element
}
}, page2_datatype);
于 2015-03-30T05:05:03.460 回答
1

这样想吧。JavaScript 在浏览器中运行,例如 Chrome。Chrome 可以看到当前加载的页面,但不知道仍然在服务器上的 html 文件,直到它们被带入浏览器。你可以做的是有一个包含不可见的logged.html的iFrame(可能是1x1像素,或者在页面外有一个位置的固定位置(左:4000px)。然后你可以参考iFrame并从中获取元素在那里,这个解释了如何引用 iFrame 中的元素:getElementById from iframe

于 2013-03-15T00:42:12.317 回答