2017-06-21 58 views
0

我一直在尝试适应现有的(&工作标签),如果你愿意更高效/优雅一点。自定义HTML标签:JS编译错误为userType dataLayer推

所以情况是,我们有一种通过GTM自定义HTML标签将userType推入dataLayer的方法。不过,我试图发布标签时遇到了编译错误。

这里的标签:

<script> 
(function() { 
var ipaddress;; 
var type = 'external'; 
try { 
    jQuery.getJSON('https://ipinfo.io', function(data) { 
    ipaddress = data.ip; 
    var internal = [ 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address" 
    ]; 
    var userType = internal.indexOf(ipaddress) == -1 ? ‘external’ : ‘internal’; 
    } 
    if (ipaddress) { 
     window.dataLayer.push({ 
     event: 'ipResolved', 
     ipaddress: ipaddress, 
     userType: userType 
     }); 
    } 
    }); 
} catch(e) { 
    window.dataLayer.push({ 
    event: 'ipResolved', 
    ipaddress: 'N/A', 
    iplocation: 'N/A' 
    }); 
} 
})(); 
</script> 

任何人都可以揭示我要去哪里错了一些轻?我觉得我太靠近了,所以我看不到明显的。

+0

在以usertype开头的行中,内部和外部的单词都包含在'智能'引号中。改用直的。 –

回答

0

你的JS有一些小错误:

  • 错误报价。这是代替'
  • 一个不必要}

。工作版本在这里:

(function() { 
var ipaddress; 
var type = 'external'; 
try { 
    jQuery.getJSON('https://ipinfo.io', function(data) { 
    ipaddress = data.ip; 
    var internal = [ 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address", 
     "IP address" 
    ]; 
    var userType = internal.indexOf(ipaddress) == -1 ? 'external' : 'internal'; 

    if (ipaddress) { 
     window.dataLayer.push({ 
     event: 'ipResolved', 
     ipaddress: ipaddress, 
     userType: userType 
     }); 
    } 
    }); 
} catch(e) { 
    window.dataLayer.push({ 
    event: 'ipResolved', 
    ipaddress: 'N/A', 
    iplocation: 'N/A' 
    }); 
} 
})(); 
+0

谢谢维克多,它像一个魅力。你是个绅士! – VanGTO