在 WKWebView 中注入 javascript 以获取单击图像的 src 属性

我想在 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 中的类注入的,则我无法从返回的字符串中获取它。任何人都可以帮忙吗?谢谢。


哈士奇WWW
浏览 292回答 1
1回答

慕容708150

你会很高兴知道它比这简单得多,因为事件对象有一个属性,称为target被点击的元素。由于您对img元素感兴趣,我们不必担心它是您想要的元素的子元素,因此我们可以直接使用evt.target。为了更容易,HTMLImageElement对象有一个src属性,它提供图像的完整、解析的 URL,所以:document.addEventListener("click", function(evt) {&nbsp; &nbsp; if (evt.target.tagName === "IMG") {&nbsp; &nbsp; &nbsp; &nbsp; window.webkit.messageHandlers.jsMessenger.postMessage(evt.target.src);&nbsp; &nbsp; }});但如果你真的想要outerHTML:document.addEventListener("click", function(evt) {&nbsp; &nbsp; if (evt.target.tagName === "IMG") {&nbsp; &nbsp; &nbsp; &nbsp; window.webkit.messageHandlers.jsMessenger.postMessage(evt.target.outerHTML);&nbsp; &nbsp; }});假设这是一个 HTML 页面,您可以依赖tagName所有大写的存在(即使它不在解析页面的 HTML 中)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript