javascript - 使用 JSNI 调用带参数的 javascript 函数

标签 javascript gwt jsni mixpanel

我正在尝试将 Mixpanel 与 GWT 集成,但我在调用具有一个属性和一个值的事件时遇到问题。

我跟踪一个简单事件(没有值)的函数:

 public native void trackEvent(String eventName)/*-{
        $wnd.mixpanel.track(eventName);
    }-*/;

有效。

但是当我想添加一些属性和值时,它不能正常工作:

public native void trackComplexEvent(String eventName, String property, 
            String value)/*-{
    $wnd.mixpanel.track(eventName, {property:value});

}-*/;

我有两个问题:

1) Mixpanel 显示属性名称是:“property”(是的,我传递的变量的名称,而不是值)。

2) Mixpanel 显示值为:undefined

mixpanel web 的一个例子是:

mixpanel.track("Video Play", {"age": 13, "gender": "male"});

所以,我想问题是我调用错误或参数类型错误。

最佳答案

你的问题是,当你传递你创建的属性对象时,你没有创建一个参数,取自你的property名称,而是一个名为 property 的属性.如果调试代码,可以检查参数 property传递给您的 mixpanel.track功能。

要执行您想要的操作,您必须使用其他语法。

public native void trackComplexEvent(String eventName, String property,
        String value)/*-{
    //create the property object you want to pass
    var propertyPassed = {}     
    // set the value you want to pass on the propertyPassed object
    propertyPassed[property] = value;

    //call your function with the argumetn you want to pass     
    $wnd.mixpanel.track(eventName, propertyPassed);
}-*/;

我通过在我的站点上创建一个 JavaScript 函数来测试您的代码:

window.mixpanel = {
            track : function(eventName, props) {
                alert(props.age);
            }
        }

并调用它

    trackComplexEvent("hallo", "age", "13");

警报是 '13'

BR, 斯特凡

关于javascript - 使用 JSNI 调用带参数的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984968/

相关文章:

javascript - d3 : tooltips on multi series line chart at each line when mouse hover event

java - Maven GWT 2.0 和 Eclipse

java - 评估时类型转换和事后类型转换的区别

gwt - GWT中的post token是如何生成的?

javascript - 如何做一个 GWT-Wrapper

Javascript 对象字面量表示法,使用函数

javascript - 为 Javascript 中动态生成的元素生成多个 AJAX 代码,

javascript - 将 div 包裹在一个周围并阻止 div 隐藏起来

javascript - 如何创建与 JavaFx WebView 一起使用的 JavaScript 包装器? JSNI 是一个选项吗?

javascript - GWT:隐藏移动设备上的地址栏