如何使用javascript从dom中获取点击位置的图片网址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用javascript从dom中获取点击位置的图片网址?相关的知识,希望对你有一定的参考价值。

我一直在开发chrome扩展名,我想在点击的位置获取图片网址。问题是图像标签可能没有出现在单击的位置。它可能深深地嵌套在dom中。是否有任何Javacript库用于获取图像的URL?使用背景css属性附加一些时间图像。这是我编写的代码,但有时无法获取图像网址。

if ($(e.target).is("img")) {
                data = $(e.target).attr('src');
            } else if ($(e.target).children('img').length > 0) {
                data = $(e.target).children('img')[0].attr('src');
            } else if ($(e.target).parents('img').length > 0) {
                data = $(e.target).parents('img').attr('src');
            } else {
                data = $(e.target).css("background-image");
                if (data.indexOf("url") == 0)
                    data = data.slice(5, data.length - 2);
            }
            if (verifyImageType(data)) {
                data = parseImageSource(data);
            } else {
                showToast("Cannot grab image source. Please manually add image url");
                worofIframe.postMessage({ type: "RESET_SELECTION_VARIABLES", content: "" }, "*")
            }



parseImageSource = (url) => {
    //Remove leading slashes if any
    while (url.charAt(0) == '/' || url.charAt(0) == '\') {
        url = url.substr(1);
    }
    // Regular expression matching google.com like pattern
    if (url.match(/[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,6}([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g)) {
        if (!(url.indexOf("http://") == 0 || url.indexOf("https://") == 0)) {
            url = window.location.protocol + "//" + url;
        }
    } else {
        url = window.location.origin + "//" + url;
    }
    return url;
}

verifyImageType = (url) => {
    return (url.match(/.(jpeg|jpg|gif|png|svg)/) != null);
}
答案

很好information,非常感谢您分享这些内容

以上是关于如何使用javascript从dom中获取点击位置的图片网址?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 点击怎么获取自己是第几个?

使用 JavaScript 获取 2 个 DOM 元素之间的相对位置

如果单击 DOM 中的任何位置,则隐藏 div

如何使用 Javascript DOM 从具有多个表单的页面获取具有输入类型密码的表单?

javascript怎么操作iframe页面里面的dom元素?

如何使用 JavaScript / PHP 从图像中获取地理位置数据?