6

HTMLヘッダーに配置されるビジュアルWebサイトオプティマイザーからのJavaScriptコードがあります。

var _vwo_code=(function(){
var account_id=7237,
settings_tolerance=2000,
library_tolerance=1500,
use_existing_jquery=true,
// DO NOT EDIT BELOW THIS LINE
f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);this.load('//dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&r='+Math.random());var a=d.createElement('style'),b='body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init();

しかし、私はこの条件でのみこのコードを実行したいと思います:

$(document).ready(function(){
  if($('#selectedLang').val() == 'en_US')
  {
    //run the visual website optimizer code
  }
});

これを試しましたが、「_vwo_codeが定義されていません」というエラーが返されます

$(document).ready(function(){
  if($('#selectedLang').val() == 'en_US')
  {
    var _vwo_code=(function(){
    var account_id=7237,
    settings_tolerance=2000,
    library_tolerance=1500,
    use_existing_jquery=true,
    // DO NOT EDIT BELOW THIS LINE
    f=false,d=document;return{use_existing_jquery:function(){return use_existing_jquery;},library_tolerance:function(){return library_tolerance;},finish:function(){if(!f){f=true;var a=d.getElementById('_vis_opt_path_hides');if(a)a.parentNode.removeChild(a);}},finished:function(){return f;},load:function(a){var b=d.createElement('script');b.src=a;b.type='text/javascript';b.innerText;b.onerror=function(){_vwo_code.finish();};d.getElementsByTagName('head')[0].appendChild(b);},init:function(){settings_timer=setTimeout('_vwo_code.finish()',settings_tolerance);this.load('//dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&r='+Math.random());var a=d.createElement('style'),b='body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}',h=d.getElementsByTagName('head')[0];a.setAttribute('id','_vis_opt_path_hides');a.setAttribute('type','text/css');if(a.styleSheet)a.styleSheet.cssText=b;else a.appendChild(d.createTextNode(b));h.appendChild(a);return settings_timer;}};}());_vwo_settings_timer=_vwo_code.init();
  }
});

どうすればこれを解決できますか?前もって感謝します!

4

1 に答える 1

9

VWOに必要なのは、_vwo_code変数をグローバルに使用できるようにすることですが、ドキュメントレディハンドラー内で定義すると、ローカルスコープにとどまるため、外部からアクセスできなくなります。

だからこれを修正するためにあなたは書くことができます

window._vwo_code=(function(){

それ以外の

var _vwo_code=(function(){

ただし、ドキュメントの準備ができた後にVWOコードが実行されるようになったため、テストページにちらつき(変更が適用される前に表示された元のコンテンツ)が表示される場合があることに注意してください。

(注:私はVWOで働いています)

于 2012-10-19T18:22:23.660 に答える