如果有人使用像Ghostify这样的浏览器插件访问我的网站,我的Google+,Facebook等按钮就会消失。所以我想我应该编写一些Javascript来检查这些是否根据选择器内容加载,或者选择器是否存在,具体取决于各个元素的HTML ...然后附加一些文本而不是按钮
$(document).ready(function () {
/// Google+ : I check if it's div that was left has any content
if ($(".g-plusone").html().length < 1 ) {
$(".g-plusone").append('<p>Google+1 Blocked</p>');
}
/// Facebook I check if the widget selector even exists
if (!$(".fb_iframe_widget").length) {
$(".fb-like").append('<p>Facebook Like button blocked</p>');
}
});
这似乎有效,除了Firefox 11 +之外,它似乎仍适用于所有浏览器。
我无法弄明白,因为它有时会加载附加的Facebook文本,即使div存在。有时它会正常加载facebook按钮。
换句话说,即使firefox中没有阻塞,附加脚本也会触发。
有什么想法吗?
干杯
答案 0 :(得分:1)
在摆弄了几个小时后,我当然想起了RTFM方法并转到了jquery文档。
在此之前,我尝试使用.load()而不是.ready()。我想如果在我的脚本之前加载了所有页面,那就不可能它不起作用了。但它没有用。
现在在我注意到我正在使用
的文档之后 $(document).load(function ()
但我真正需要的是
$(window).load(function ()
DUH!广泛测试似乎现在一切正常。当插件阻止按钮时,我的IF语句将其拾取并显示一些文本,否则它们显示正常。
这是当前运行良好的代码,我需要稍后整理,尽可能优化和填充
$(window).load(function () {
var gplus = $("#node_movie_full_group_sharebuttons .g-plusone").html().length;
var fejs = $("#node_movie_full_group_sharebuttons .fb_iframe_widget").length;
var disq = !$("#dsq-content").length;
if (gplus < 1) {
$(".g-plusone").append('<p>Google+1 Blocked</p>');
$(".field-name-sharebuttonsmovie .field-item").css("top", 0);
}
if (fejs < 1) {
$(".fb-like").append('<p>Facebook Like button blocked</p>');
$(".field-name-facemovie .field-item").css({ 'top': '0', 'left': '0' });
}
if (disq) {
$("#disqus_thread").append('<p>Something is blocking the Disqus comments system</p>');
}
});
答案 1 :(得分:0)
我猜想Firefox上的插件会删除.g-plusone
和.fb-like
个项目。
将G +和FB小部件包装在始终存在的div中。使用与&#34; g-plus&#34;充分不同的ID和/或css类。和&#34; fb&#34;所以,过度热心的插件也不会删除你的div。