1

对于我的网站,我想在我的网站上添加 Facebook 赞。

这是我使用的代码:

document.write('<iframe id="like-box" src="http://www.facebook.com/plugins/like.php?href='+ like_url +'&amp;layout=button_count&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:60px; height:80px;" allowTransparency="true"></iframe>');

var popupDiv = document.getElementById('like-box');
popupDiv.onclick = function(e){
    if (!e) e = window.event;
    alert("Like button will be removed");
    document.removeChild(popupDiv);
};

like_url包含我的网站 url 的字符串在哪里。

我希望在用户单击 iframe 时将其删除。但是上面的代码根本不起作用。onclick 函数永远不会被触发。有没有办法让它正常工作?

我也尝试过像这样对 twitter 按钮做同样的事情:

document.write('<div id="like-box" style="left:0; top:0; width: 500px; height: 230px;">');
document.write('<scr'+'ipt type="text/javascript" src="https://apis.google.com/js/plusone.js"></scr'+'ipt>');
document.write('<g:plusone href="' + gplus_url + '"></g:plusone>');
document.write('</div>');

var popupDiv = document.getElementById('like-box');
popupDiv.onclick = function(e){
    if (!e) e = window.event;
    alert("G+ button will be removed");
    document.removeChild(popupDiv);
};

但它也不起作用!我试图触发点击窗口,但我得到了相同的结果。

你能帮我解决吗?

编辑:

我会尝试以更好的方式解释它。我想从主文档中检测 iframe 内部或上方的点击事件。我的意思是:我在我的网站上。我点击 facebook,点击是由我的 index.html 页面触发的,然后我在几秒钟后删除了 iframe。但是类似的已经被FB抓到了。这基本上是我想做的。我尝试了许多在单击 iframe 时触发函数的代码,但没有一个起作用。例如:

onload="this.contentWindow.document.onclick=function(){alert(\'test\')}"

根本不起作用。

编辑 2:这看起来是一个严重的问题,因为如果我在我的窗口上使用 onclikc 函数(例如window.onclick = function(e) {...};,当我点击 iframe 时它不会被触发。知道吗?

4

4 回答 4

1

而不是document.removeChild(popupDiv)试试这个:

popupDiv.parentNode.removeChild(popupDiv);

IIRC,您只能使用其父节点删除节点,而不是文档本身。

于 2012-12-26T22:30:42.727 回答
1

最后我找到了方法(至少在第一次点击时)。如果有人需要代码,这里是:

var inIframe = false;
function checkClick()
{
    if (document.activeElement && document.activeElement === document.getElementById("iframe_id_goes_here"))
    {
        if (inIframe == false)
        {
            console.log("Clicked");
            inIframe = true;
        }
    }
    else inIframe = false;
}
setInterval(checkClick, 200);

感谢那些试图帮助我的人。

于 2012-12-27T13:19:56.483 回答
0

从体内取出:document.body.removeChild(popupDiv);

于 2012-12-26T22:35:05.167 回答
-2

尝试document.getElementById(popupDiv).innerHTML = "";

于 2012-12-26T22:31:24.027 回答