我剛開始學習Polymer,並且一直在研究他們的文檔。我創建了似乎是工作對我來說是非常簡單的Hello World元素:聚合物 - Chrome瀏覽器元素瀏覽器中可見的內部元素
<link rel="import" href="/path/to/polymer/polymer.html">
<dom-module id="test-element">
<template>
<style>
p {
color: blue;
}
</style>
<p>Hello [[name]]!</p>
</template>
<script>
Polymer({
is: 'test-element',
properties: {
name: String
}
});
</script>
</dom-module>
我可以導入和使用元素成功地在頁面上:
<link rel="import" href="/path/to/my/test-element.html">
<test-element name="World"></test-element>
那正確地顯示一個藍色「P '元素說「Hello World!」,並且我還可以看到元素上的CSS樣式正確地不滲入元素外部頁面上的其他'p'元素。
到目前爲止這麼好。然而,在我一直在閱讀的文檔中,Web組件的好處之一是它的內部實現細節在主DOM樹中是隱藏的。他們給出的例子是'video'元素,裏面有其他元素,但是你不能直接查詢這些元素。但是,在Chrome開發人員工具中,我能夠在'test-element'內的DOM樹中看到'p'元素。我甚至可以用jQuery查詢它,我認爲我不應該能夠做到:
$("test-element p")
// Produces: [ <p class="style-scope test-element">Hello World!</p> ]
上午我做錯了什麼,或者我有誤解聚合物的工作方式?
您可以在啓用'shadow-dom'後嘗試這個相同的測試。 [這裏](https://www.polymer-project.org/1.0/docs/devguide/settings)是怎麼做到的。 – a1626
太棒了,我無法在支持陰影DOM的瀏覽器上查詢內部元素。如果你可以發表你的評論作爲答案,我會upvote並接受它。 – dsw88