2014-09-12 122 views
1

我正在使用這段代碼來驗證creativeId是否爲空,但它突然停止工作。如何驗證creativeId是否爲空

googletag.pubads().addEventListener('slotRenderEnded', function(event) { 
    if(event.slot.k.indexOf('_super_superior')>0) { 
     if(event.creativeId!=null) { 
      alert('DFP'); 
     } 
     else { 
      alert('Adsense'); 
     } 
    } 
}); 

似乎creativeId現在總是未定義,然後我無法運行該函數。

是否有任何其他方式可以驗證creativeId爲空,因此我可以檢測哪些廣告是DFP廣告管理系統和AdX是什麼?

謝謝!

回答

1

你可以試試這樣:

if(event.creativeId!=null || event.creativeId!= undefined) 
+2

爲什麼downvote? – 2014-09-12 17:15:43

+0

可能因爲在編輯之前它是錯誤的。 – GillesC 2014-09-12 17:46:21

+0

@gillesc:是的,這是一個錯字,但固定的那一刻,我得到了downvote :( – 2014-09-12 17:47:35

1

試試這個,檢查對字符串'undefined'undefined不工作是不是一個字符串,字符串'undefined'時對typeof結果檢查是。

if (event.creativeId!=null || event.creativeId != undefined) 

JS Fiddle

typeof的方法是這樣的,而不是typeof event.creativeId !== 'undefined'

2

你的代碼,寫,null和非null值之間的區分將然而null是不一樣的undefined

要爲null明確測試:

if (event.creativeId === null) { ... } 

要爲undefined明確測試:

if (event.creativeId === undefined) { ... } // preferred by Crockford 

if (typeof event.creativeId === 'undefined') { ... } 

鑑於現有的邏輯,你可能只是想使用"falsiness"以控制分支:

googletag.pubads().addEventListener('slotRenderEnded', function(event) { 
    if (event.slot.k.indexOf('_super_superior') > 0) { 
     if (event.creativeId) { // if event.creativeId exists/is numeric and non-zero/is a non-empty string/etc. 
      alert('DFP'); 
     } else { 
      alert('Adsense'); 
     } 
    } 
});