我正在編寫一段基礎結構,需要對HTML元素與SVG元素進行不同的應用。給定一個DOM節點,如何判斷它是SVG還是HTML元素?如何判斷DOM元素是HTML還是SVG?
回答
您可以嘗試類似以下內容:
if(document.getElementById("el") instanceof SVGElement) {
console.log("It's an SVG element");
}
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="300" height="300">
<g id="firstGroup">
<rect id="el" width="100" height="50" x="40" y="20" fill="blue" />
<text x="40" y="100">This is a basic SVG document!</text>
</g>
</svg>
注意,<svg>
元素本身實際上是一個HTML元素含有SVG
元素 - 這意味着,也許令人驚訝的是,<svg>
HTML元素不一個SVG
元素,因此:
console.log(document.createElement("svg") instanceof SVGElement)) // => false
這感覺更加直接。 –
謝謝@BillCriswell,我想是的! –
我做了if(element.getBBox){來檢查元素是否有getBBox方法。某些功能/方法僅適用於SVG元素。 –
我不知道如何跨瀏覽器兼容,但我戳穿DOM屬性,看到一個ownerSVGElement
這似乎很有前途?
這裏去了我的玩弄與周圍:http://jsbin.com/uMIronal/4/edit?html,js,output
請注意,除非已將SVG元素添加到文檔中,否則此方法不起作用 - 例如,document.createElementNS(「http://www.w3.org/2000/svg」,「circle」)。 ownerSVGElement'將是'null',所以'instanceof'更可靠,並且[性能更好](https://jsperf.com/check-if-svg-element/1)。 –
- 1. 如何判斷是否顯示DOM元素?
- 2. 如何判斷庫是COM還是DCOM?
- 3. 如何判斷元素是否位於DOM中的另一個元素之前
- 4. 如何判斷字符串在元值中是空還是空?
- 5. HTML 5拖放如何判斷元素是否接受放置
- 6. 如何判斷一個元素是否是jquery-ui小部件?
- 7. 如何判斷Select元素在DOM中是否可見? (在Materializecss框架中)
- 8. 如何判斷dom重複何時完成衝壓元素
- 9. 測試DOM元素還是JSON
- 10. 如何判斷哪些事件綁定到DOM元素?
- 11. 如何判斷成功$ .ajax()的返回數據是html還是json?
- 12. in node.js express,如何判斷HTTP請求是application/json還是html內容negoition
- 13. 如何判斷用戶是新訪客還是返回? analytics.js
- 14. 如何判斷bonjour服務是無線還是藍牙?
- 15. 如何判斷我寫的程序是32位還是64位?
- 16. 如何判斷跳轉是絕對還是相對?
- 17. 如何在PHP中判斷它是數組還是散列?
- 18. 如何判斷它是對象還是數組?
- 19. 如何判斷obj是jquery還是普通javascript
- 20. 如何判斷EntityObject的屬性是主鍵還是外鍵?
- 21. 如何通過opencv判斷輪廓是線還是曲線?
- 22. 如何判斷交易是成功還是失敗?
- 23. 如何判斷我的對象的值是float還是int?
- 24. 如何判斷SQL Server是本地還是遠程?
- 25. 如何判斷資源/實體是類還是實例
- 26. 如何判斷CmisObject是代表文件還是文件夾?
- 27. 如何判斷鼠標是單擊還是鍵盤按
- 28. 如何判斷我的YEN符號是反斜槓還是YEN?
- 29. 如何判斷javascript對象是圖片還是畫布?
- 30. 如何判斷一個標籤是網站還是圖片?
不同意,這需要一個代碼示例來說明問題,這個問題是從文字清晰。 – David
@大衛不僅是荒謬的緊密原因,但你會看到,問題得到了一個堅實的答案,可以在30分鐘內用於其他人。我不知道這些人在這裏想什麼。 –