哈士奇WWW
2021-10-21 14:55:30
我想在 webkitview 中注入一個 javascript 代碼,當用戶點擊它時獲取被點擊圖像的 src 屬性。我還發現有些圖像沒有將它們的 src 屬性直接放在 img balise 中,但它是由 balise 中的一個類注入的。我發現這個腳本可以在 webview 中獲取點擊的 Html 元素: document.addEventListener("click", function(evt) { var tagClicked = document.elementFromPoint(evt.pageX - window.pageXOffset, evt.pageY - window.pageYOffset); window.webkit.messageHandlers.jsMessenger.postMessage(tagClicked.outerHTML.toString()); });類注入的 src 屬性示例: <img alt="Chaussure de football enfant terrains secs Agility 900 FG JR grise et bleue" class="source-medium">在這種情況下,如果返回的字符串是圖像,我可以從返回的字符串中獲取 src 屬性,但是如果 src 屬性是由 img balise 中的類注入的,則我無法從返回的字符串中獲取它。任何人都可以幫忙嗎?謝謝。
1 回答

慕容708150
TA貢獻1831條經驗 獲得超4個贊
你會很高興知道它比這簡單得多,因為事件對象有一個屬性,稱為target被點擊的元素。由于您對img元素感興趣,我們不必擔心它是您想要的元素的子元素,因此我們可以直接使用evt.target。
為了更容易,HTMLImageElement對象有一個src屬性,它提供圖像的完整、解析的 URL,所以:
document.addEventListener("click", function(evt) {
if (evt.target.tagName === "IMG") {
window.webkit.messageHandlers.jsMessenger.postMessage(evt.target.src);
}
});
但如果你真的想要outerHTML:
document.addEventListener("click", function(evt) {
if (evt.target.tagName === "IMG") {
window.webkit.messageHandlers.jsMessenger.postMessage(evt.target.outerHTML);
}
});
假設這是一個 HTML 頁面,您可以依賴tagName所有大寫的存在(即使它不在解析頁面的 HTML 中)。
添加回答
舉報
0/150
提交
取消