从函数中获取结果并将其添加到javascript中

时间:2011-11-23 01:20:30

标签: javascript

我使用的JavaScript读取URL并解析参数。当我将document.write添加到页面主体时,JavaScript工作得很好。我正在尝试获取参数值并将其填充到Google JavaScript中以进行广告投放。从'frank'变量中获取参数'fire'并将其替换为此JS中的'VALUE'是理想的:GA_googleAddAttr("ad_key", "VALUE");

我觉得我错过了从第一个JS中获取结果并将其放在Google JS中的位置。

任何帮助将不胜感激。提前谢谢。

示例网址:http://www.example.com/test.html?frank=fire

------------ JavaScript:获取url参数------------

<script type="text/javascript">

function gup( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )    return "";
else    return results[1];}

var frank_param = gup( 'frank' );

</script>

------------ JavaScript:google广告投放属性------------

<script type="text/javascript">
GA_googleAddAttr("ad_key", "VALUE");
</script>

ad_key =在Google DFP广告投放平台中添加

VALUE =用于定位特定网页的广告


2 个答案:

答案 0 :(得分:1)

第一个脚本执行了大量不必要的工作,并且巧妙地不正确。

它会失败

  1. 当参数名称包含反斜杠
  2. 当查询中没有参数但片段中有一个
  3. 当参数值包含%-encoded character
  4. 您可以将其替换为

    function gup(name) {
      var params = {};
      var parts = (window.location.search || '').split(/[&?]/);
      for (var i = 0; i < parts.length; ++i) {
        var eq = parts[i].indexOf('=');
        if (eq < 0) continue;
        params[decodeURIComponent(parts[i].substring(0, eq))]
            = decodeURIComponent(parts[i].substring(eq+1));
      }
      return Object.hasOwnProperty.call(params, name)
          ? params[name] : null;
    }
    

    将正确地为您提供CGI参数值。

    然后用

    跟着它
    GA_googleAddAttr("ad_key", gup('frank') || '');
    

答案 1 :(得分:0)

GA_googleAddAttr("ad_key", frank_param);应该可以解决问题。