我想知道我在(Internet Explorer)上触发上下文菜单的图像的url

I want to know the url of an image I triggered a context menu on(Internet Explorer)

本文关键字:url 上下文 菜单 图像 想知道 Internet Explorer      更新时间:2024-01-15

我遵循了这个来源的说明:http://www.codeguru.com/cpp/com-tech/atl/atl/article.php/c11007/Customize-an-IE-Context-Menu-to-Add-CodeGuru-Favorites.htm添加上下文菜单项并通过Javascript调用ActiveX控件的方法。这是重要的部分:

<SCRIPT LANGUAGE="JavaScript">
var parentwin = external.menuArguments; 
var doc = parentwin.document;
var str = new String(parentwin.event.srcElement.name);
var oFav = new ActiveXObject("CodeguruFavorites.CGFavorites");
oFav.ShowDefaultContextMenu(parentwin,doc.title, doc.location);
</SCRIPT>

在这个例子中,作者将网页的标题和我在上触发上下文菜单的网页的URL发送到ActiveX方法。

我想知道如何获取我在上触发上下文菜单的图像的URL。

我在这篇文章中找到了答案:如何用Javascript识别当前点击的链接?。

触发上下文菜单的对象是menuArguments.event.srcElement。它作为IDispatch接口指针传递给ActiveX控件的方法。在此指针上,您可以调用QueryInterface来获取指向IHTMLImgElement的指针。

pDispatch->QueryInterface(IID_IHTMLElement,(void**)&lpElement);
if (lpElement)
{
    CComBSTR tagName;
    lpElement->get_tagName(&tagName);
    if(0 == wcsicmp(tagName.m_str, L"img"))
    {
        CComPtr<IHTMLImgElement> spImg;
        lpElement->QueryInterface(IID_IHTMLImgElement, (void**)(&spImg));
        if(spImg)
        {
            CComBSTR src;
            HRESULT hr = spImg->get_src(&src);
            if(FAILED(hr))
                return hr;
        }
    }
}