要检查adsense脚本是否已加载,我使用:
var isAdsenseNotLoaded = (typeof adsbygoogle.loaded === 'undefined');
但是很多用户在堆栈跟踪中都有这个错误:
ReferenceError: adsbygoogle is not defined
at http://example.com/file.js:1:42020
我还应该检查adsbygoogle
还是adsbygoogle.loaded
?
答案 0 :(得分:11)
您需要先检查是否先定义了adsbygoogle
:
var isAdsenseNotLoaded = !adsbygoogle || typeof adsbygoogle.loaded === 'undefined';
答案 1 :(得分:1)
是的,首先检查typeof adsbygoogle
,如果加载了全局变量adsbygoogle
,则会返回。
var isAdsenseNotLoaded = (typeof adsbygoogle === 'undefined' || typeof adsbygoogle.loaded === 'undefined');
使用typeof
检查全局变量将永远不会因尝试访问未定义的变量而产生任何异常。参考:JavaScript check if variable exists (is defined/initialized)
答案 2 :(得分:0)
所以整个对象没有定义
var isAdsenseNotLoaded = (typeof adsbygoogle === 'undefined' || typeof adsbygoogle.loaded === 'undefined');
如果对象存在,只需检查第一步,然后加载它。