我如何使用Muse param进行布尔比较以运行JS函数?

时间:2015-01-21 22:41:38

标签: javascript muse

我需要Adobe Muse小部件,它将运行基于true或false的函数。
也许这可以帮助http://adobe-muse.github.io/MuCowDocs/#id-bool-

<parameters>
    <bool name="rwindow" label="Resize Window" defaultValue="true">
        <trueVal value="true"/>
        <falseVal value="false"/>
    </bool>
</parameters>

我需要这样的东西:

if(true) {
    alert('function on');
    } else if(false) {
    alert('function off');
}

非常感谢你的时间和耐心。

1 个答案:

答案 0 :(得分:0)

一些一般性观察..您有一些语法错误,而您不需要if(false)。这永远不会被评估,并且在那时没有返回的功能。而且您的脚本代码缺少结束>

从jQuery 1.7开始,.on优先于.bind

要从服务器重新加载而不是缓存,您需要reload(true)

您的超时代码看起来不错。

我不是缪斯专家,但您需要使用{param}表示法将params引入代码。

通过更简单的示例(下面附带)发现,要在字符串比较中使用Muse param,您需要将其包装在引号中:if ("{param_wresize}" == "true")这可能会生成JS,

if ("true" == "true") // Evaluates to true 

或在其他参数设置的情况下,

if ("false" == "true") // Evaluates to false

所以我们得到类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
<HTMLWidget name="Resize Window" formatNumber="2" localization="none"
    creator="Mukos" defaultWidth="30" defaultHeight="30"
    isResizable="false">

    <parameters>
        <separator/>
        <bool name="wresize" label="Resize Window" defaultValue="true">
            <trueVal value="true"/>
            <falseVal value="false"/>
        </bool>
    </parameters>

    <bodyEndHTML>
        <![CDATA[
            <script type="text/javascript">
                if ("{param_wresize}" == "true" ) {
                    $(window).on('resize', function(e) {
                        if (window.RT) clearTimeout(window.RT);
                        window.RT = setTimeout(function() {
                            this.location.reload(true);
                        }, 200);
                    });
                }
            </script>
        ]]>
    </bodyEndHTML>
</HTMLWidget>

你可以尝试一下,看看它是否有效,但我不能说它会不会。这就是我在上面的评论中建议XY问题的原因。您已经非常具体地询问了如何基于参数值运行函数。但是你要解决的实际问题是什么?你可能会以错误的方式去做。任何有关您的意图的信息都会有用。

例如,调整大小时重新加载的模式可能是修复某种布局问题,可能与响应式设计有关。 Muse并不擅长构建响应式网站。可能还有其他方法可以解决这个问题。


Mukos提出的更简单的版本。试试这样:

<?xml version="1.0" encoding="UTF-8"?>
<HTMLWidget name="Resize Window" formatNumber="2" localization="none"
    creator="Mukos" defaultWidth="30" defaultHeight="30"
    isResizable="false">

    <parameters>
        <separator/>
        <bool name="wresize" label="Resize Window" defaultValue="true">
            <trueVal value="true"/>
            <falseVal value="false"/>
        </bool>
    </parameters>

    <bodyEndHTML>
        <![CDATA[
            <script type="text/javascript">
                if ("{param_wresize}" == "true" ) {
                    alert("true");
                }
                else {
                    alert("false");
                }
            </script>
        ]]>
    </bodyEndHTML>
</HTMLWidget>