抓取javascript函数参数

抓取javascript函数参数,javascript,Javascript,如何获取javascript函数的参数 下面是我的代码 <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-45-9"); pageTracker._trackPageview();pageTracker._addTrans("3128", "", "20.4600", "0.0000", "8.1900", "SFO", "CA", "US"); pageTracker._addItem("

如何获取javascript函数的参数

下面是我的代码

<script type="text/javascript"> 
var pageTracker = _gat._getTracker("UA-45-9");
pageTracker._trackPageview();pageTracker._addTrans("3128", "", "20.4600", "0.0000", "8.1900", "SFO", "CA", "US");
pageTracker._addItem("3128", "23317", "Cheese ", "", "6.2900", "1");
pageTracker._addItem("3128", "23318", "Lazzaroni", "", "1.9900", "1");
pageTracker._addItem("3128", "23316", "Italian Food", "", "3.9900", "1");
pageTracker._trackTrans();
</script>

var pageTracker=_gat._getTracker(“UA-45-9”);
页面跟踪器。_trackPageview();pageTracker._addTrans(“3128”、“20.4600”、“0.0000”、“8.1900”、“SFO”、“CA”、“美国”);
pageTracker._addItem(“3128”、“23317”、“Cheese”、“6.2900”、“1”);
pageTracker._addItem(“3128”、“23318”、“Lazzaroni”、“1.9900”、“1”);
pageTracker._addItem(“3128”、“23316”、“意大利食品”、“3.9900”、“1”);
页面跟踪器。_trackTrans();
对于上面的代码,我想获取函数pageTracker的参数。\u addItem()以在javascript代码中使用它。我该怎么做


问题是我无法访问完整的源代码,但只有我可以向其中添加一些javascript和html,该网站位于network solutions,他们不提供对某些计划代码的访问。。。。所以我需要获取上面javascript函数的参数,并将其用于我的javascript,我可以将其添加到代码中


谢谢

假设您的意思是希望在随后的一些JavaScript中分析上述代码,我想说没有真正简单的方法可以做到这一点。您可以从
pageTracker
对象中获取添加的
条目,但这听起来很难


如果可能的话,我建议您在自己的数组中跟踪添加的项。

假设您的意思是要在随后的一些JavaScript中分析上述代码,我会说没有真正简单的方法来做到这一点。您可以从
pageTracker
对象中获取添加的
条目,但这听起来很难

如果可能,我建议在自己的数组中跟踪添加的项目。

使用以下方法:

GAitems = [];
GAitems.oldAdd = pageTracker._addItem;
pageTracker._addItem = function() {
  GAitems.push(arguments);
  GAitems.oldAdd.apply(pageTracker, arguments)
}​
所有添加的项目都将在
GAitems
数组中为您提供(它们也被正确地添加到Google Analytics中)。

使用以下方法:

GAitems = [];
GAitems.oldAdd = pageTracker._addItem;
pageTracker._addItem = function() {
  GAitems.push(arguments);
  GAitems.oldAdd.apply(pageTracker, arguments)
}​

所有添加的项目都将在
GAitems
数组中为您提供(它们也被正确地添加到Google Analytics中)。

根据新信息,现在回答这个问题更有意义

网络解决方案源是否包含在iframe中?如果是,协议、域和端口是否与脚本所在的位置以及网络解决方案脚本的来源相匹配?如果没有,那么您将无法访问它的任何部分

如果它不在iframe中,也不隐藏在闭包中,那么您可以访问
pageTracker.\u addItem(…)
,但这还有一个问题。因为我猜你不能在代码的中间任意插入代码,你不能这样做:

var pageTracker = _gat._getTracker("UA-45-9");
// with a swift ninja move, replace pageTracker._addItem with your
// own implementation here before its first usage
// but after it has been created
..
pageTracker._addItem("3128", "23317", "Cheese ", "", "6.2900", "1");
..
因此,我认为您必须在这里更进一步,交换
\u gat.\u getTracker(..)
本身的实现,以返回修改后的
页面跟踪器
对象。然而,事情的顺序必须是:

  • 谷歌分析被包括在内(因此_gat得到定义)
  • 您的代码在这里交换了
    \u getTracker
    的实现,并修改了结果对象的
    \u addItem
    方法
  • 网络解决方案代码如下
  • 如果你不能将你的代码放在谷歌分析
    和网络解决方案代码之间,那么你就无能为力了。但是,如果这是可能的,下面是如何进行拦截:

    (function(_getTracker) { // _getTracker refers to the original method
        _gat._getTracker = function() { // swap out the original _gat._getTracker
            var _pageTracker = _getTracker.apply(_gat, arguments);
            var _addItem = _pageTracker._addItem; // original _addItem
            _pageTracker._addItem = function() { // swap out the original _addItem
                console.log(arguments); // record the arguments here
                _addItem.apply(_pageTracker, arguments); // send to original method
            };
            return _pageTracker; // return the modified pageTracker
        };
    })(_gat.getTracker);
    

    根据新的信息,现在回答这个问题更有意义

    网络解决方案源是否包含在iframe中?如果是,协议、域和端口是否与脚本所在的位置以及网络解决方案脚本的来源相匹配?如果没有,那么您将无法访问它的任何部分

    如果它不在iframe中,也不隐藏在闭包中,那么您可以访问
    pageTracker.\u addItem(…)
    ,但这还有一个问题。因为我猜你不能在代码的中间任意插入代码,你不能这样做:

    var pageTracker = _gat._getTracker("UA-45-9");
    // with a swift ninja move, replace pageTracker._addItem with your
    // own implementation here before its first usage
    // but after it has been created
    ..
    pageTracker._addItem("3128", "23317", "Cheese ", "", "6.2900", "1");
    ..
    
    因此,我认为您必须在这里更进一步,交换
    \u gat.\u getTracker(..)
    本身的实现,以返回修改后的
    页面跟踪器
    对象。然而,事情的顺序必须是:

  • 谷歌分析被包括在内(因此_gat得到定义)
  • 您的代码在这里交换了
    \u getTracker
    的实现,并修改了结果对象的
    \u addItem
    方法
  • 网络解决方案代码如下
  • 如果你不能将你的代码放在谷歌分析
    和网络解决方案代码之间,那么你就无能为力了。但是,如果这是可能的,下面是如何进行拦截:

    (function(_getTracker) { // _getTracker refers to the original method
        _gat._getTracker = function() { // swap out the original _gat._getTracker
            var _pageTracker = _getTracker.apply(_gat, arguments);
            var _addItem = _pageTracker._addItem; // original _addItem
            _pageTracker._addItem = function() { // swap out the original _addItem
                console.log(arguments); // record the arguments here
                _addItem.apply(_pageTracker, arguments); // send to original method
            };
            return _pageTracker; // return the modified pageTracker
        };
    })(_gat.getTracker);
    

    你想从页面动态抓取这些吗?你不是在你的网站上设置的吗?我真的不明白这个问题。我也不明白。你说的“抓”是什么意思?另一个Javascript应该由谁来抓取?一个解决方案是用一个记录的包装器替换
    pageTracker.\u addItem
    ,然后调用实际函数,但不知道更多关于OP的意图,尝试一个可能不存在的解决方案是没有意义的。问题是我无法访问完整的源代码,但只有我可以向其中添加一些javascript和html,该网站位于network solutions,他们不提供对某些计划代码的访问权。。。。因此,我需要获取上面javascript函数的参数,并将其用于我的javascript,我可以将其添加到代码中…@tecks-网络解决方案源代码是否包含在iframe中?如果是,协议、域和端口是否与脚本所在的位置以及NS脚本的来源相匹配?原因是如果他们不这样做,你将无法访问它。你想从页面上动态地抓取它们吗?你不是在你的网站上设置的吗?我不太明白这个问题,我也不明白。