2017-08-10 86 views
1

當我打開(例如)Chrome的開發人員工具時,我可以通過單擊它來檢查某個元素(該工具也突出顯示了這一點)。它向我展示了它的HTML標籤以及首要的類或ID。 是否有可能在我的網站上具有相同的功能,但不使用開發人員工具?檢查HTML元素沒有瀏覽器開發工具?

例子:

你挑一個網址,我的網站上顯示它的iframe中。我的目標是通過單擊它來獲取iframe中顯示的html元素的類/ id。

回答

0

像這樣?

https://jsfiddle.net/tommy_o/8sx0d693/6/

<div id="myCoolDiv"> 
    <p class="myCoolClass">This text will get replaced with the name of the div!</p> 
</div> 

<script type="text/javascript">  
    function showElementId(element) { 
     element.innerHTML = element.id; 
    } 

    showElementId(document.getElementById("myCoolDiv")); 
</script> 
+0

類似的東西,但是我正在尋找元素的ID不是我的領域,這是一個隨機的網站,我想在一個div/IFRAME /不管上顯示我的自己的網頁。認爲這是可能的? –

+1

據我所知,如果他們不在同一個域[[見同源策略wiki]](https://en.wikipedia.org/wiki/Same- origin_policy)。還要看看這些類似的SO問題:[如何獲取JavaScript中的iframe的正文內容?](https://stackoverflow.com/questions/926916/how-to-get-the-bodys-content-of在JavaScript中的一個iframe)和[瞭解iframe中的跨域問題](https://stackoverflow.com/questions/14197653/understanding-cross-domain-issue-in-iframes) – tommyO

0

是。您需要使用JavaScript。

事情是這樣的:

var h1s = document.getElementsByTagName("h1"); 
 
    var ps = document.getElementsByTagName('p'); 
 
    var imgs = document.getElementsByTagName('img'); 
 

 
    var developerWindow = document.getElementById("developer-window"); 
 

 
    function setUpListeners(tagCollection) { 
 
     for (var i=0;i<tagCollection.length;i++) { 
 
     tagCollection[i].addEventListener("pointerover", function() { 
 
      this.style.padding = "1rem"; 
 
      this.style.backgroundColor = "yellow"; 
 
      developerWindow.innerHTML = this + " id: " + this.id; 
 
     }); 
 

 
     tagCollection[i].addEventListener("pointerleave", function() { 
 
      this.style.padding = "initial"; 
 
      this.style.backgroundColor = "initial"; 
 
      developerWindow.innerHTML = ""; 
 
     }); 
 
     } 
 
    } 
 

 
    setUpListeners(h1s); 
 
    setUpListeners(ps); 
 
    setUpListeners(imgs);
body { 
 
    margin-bottom: 20%; 
 
} 
 

 
#developer-window { 
 
    border: 2px solid black; 
 
    border-bottom: none; 
 
    background-color: white; 
 
    height: 20%; 
 
    position: fixed; 
 
    bottom: 0; 
 
    width:98vw; 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
}
<h1 id="main-heading">My website</h1> 
 
<p id="first-paragraph">My first paragraph</p> 
 
<img id="featured-image" src="https://placehold.it/250x250"> 
 
<div id="developer-window"></div>

的OP請求版本的這個地方的外部網站通過iframe中加載,然後利用「開發窗口」在評論的功能下面我解釋了由於主機名稱不匹配(CORS安全問題),這是不可能的,但是如果在本地瀏覽器上禁用了這些設置,則可以這樣做。

function startDevTools() { 
 
var iframe = document.getElementById("website-iframe"); 
 
    var website = iframe.contentDocument; 
 
console.log(website); 
 
    var h1s = website.getElementsByTagName("h1"); 
 
    var ps = website.getElementsByTagName('p'); 
 
    var imgs = website.getElementsByTagName('img'); 
 

 
    var developerWindow = document.getElementById("developer-window"); 
 

 
    function setUpListeners(tagCollection) { 
 
     for (var i=0;i<tagCollection.length;i++) { 
 
     tagCollection[i].addEventListener("pointerover", function() { 
 
      this.style.padding = "1rem"; 
 
      this.style.backgroundColor = "yellow"; 
 
      developerWindow.innerHTML = this + " id: " + this.id; 
 
     }); 
 

 
     tagCollection[i].addEventListener("pointerleave", function() { 
 
      this.style.padding = "initial"; 
 
      this.style.backgroundColor = "initial"; 
 
      developerWindow.innerHTML = ""; 
 
     }); 
 
     } 
 
    } 
 

 
    setUpListeners(h1s); 
 
    setUpListeners(ps); 
 
    setUpListeners(imgs); 
 
}
body { 
 
    background-color: #eee; 
 
} 
 
iframe { 
 
    border: 5px dashed #ccc; 
 
    width:90vw; 
 
    height: 100vh; 
 
    margin: 2rem; 
 
    margin-bottom:20%; 
 
} 
 
#developer-window { 
 
    border: 2px solid black; 
 
    border-bottom: none; 
 
    height: 20%; 
 
    position: fixed; 
 
    bottom: 0; 
 
    width:98vw; 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center; 
 
    background-color: white; 
 
}
<iframe id="website-iframe" src="http://nerdspecs.com" frameborder="0" onload="startDevTools()"></iframe> 
 
<aside id="developer-window"></aside>

+0

這幾乎是我正在尋找。功能是完美的,但是可以在我的div中顯示的其他網站上使用您的代碼嗎? Like: '

' 並獲取stackoverflow的元素的ID? –

+1

很抱歉,這是不可能的。原因是,我們無法在不使用相同主機名的網站上運行JavaScript。這是一項安全功能。現在,您可以使用我將原始代碼放在下面的更新後的代碼,但您需要在瀏覽器上禁用某些安全設置。請參閱此帖以獲取更多信息: https://stackoverflow.com/questions/25098021/securityerror-blocked-a-frame-with-origin-from-accessing-a-cross-origin-frame – scramlo

+0

永遠不要疲倦於實現只有在禁用或修改安全設置時纔有效的代碼。 – tommyO

相關問題