网站上的js代码可以防止其他js代码检测到闪存的存在吗?

时间:2011-01-22 00:21:56

标签: javascript flash dom

我正在寻找一种解决方法,即“AdSense不允许您只选择图像但不允许闪存”问题。我是JS的新手,但是有没有办法让一个脚本阻止嵌入在网站中的其他脚本检测到flash插件的存在?即使它不适用于AdSense,也很高兴知道是否有可能在其他设置中执行此操作的黑客。

顺便说一句,我想如果它无法在IE或过时的浏览器版本上工作,我不会在乎。

1 个答案:

答案 0 :(得分:1)

看起来adsense通过查看navigator.plugins [“Shockwave Flash”]的内容来检测flash。不幸的是,你不能只是将它设置为不同的值,因为浏览器不会让你。同样,您无法设置navigator.plugins。有些浏览器允许您删除navigator.plugins,但不能删除所有浏览器。

但是,您可以设置导航器。因此,执行所需操作的路径涉及创建虚假导航器对象。

var real_navigator = navigator;
navigator = { plugins:[], mimeTypes:[] };
for (var k in real_navigator) {
  var t = typeof real_navigator[k];
  if (t == "string" || t == "function") {
    navigator[k] = real_navigator[k];
  }
}

此时,您仍然可以使用检查用户代理等的脚本,但插件和mimetypes不会显示。

这不是万无一失的,如果你想让IE一起玩,你必须存根ActiveXObject,但总的来说,这会让你更接近你的目标。