我如何使用 Muse 参数进行布尔比较以便 运行 JS 函数?
How can I use a Muse param to do a boolean comparison in order to run a JS function?
我需要 Adobe Muse 小部件,它将 运行 基于真或假的函数。
也许这会有所帮助 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');
}
非常感谢您的时间和耐心等待。
一些一般性观察。您有一些语法错误,不需要 if(false)
。那将永远不会被评估,并且在那时没有 return 的功能。而且您的脚本标签缺少结束符 >
.
从 jQuery 1.7 开始,.on
优于 .bind
。
要从服务器重新加载,而不是缓存,您需要reload(true)
您的超时代码看起来没问题。
我不是 Muse 专家,但您需要使用 {param} 表示法将参数添加到您的代码中。
通过一个更简单的示例(见下文)发现,要在字符串比较中使用 Muse 参数,您需要将其用引号引起来: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>
我需要 Adobe Muse 小部件,它将 运行 基于真或假的函数。
也许这会有所帮助 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');
}
非常感谢您的时间和耐心等待。
一些一般性观察。您有一些语法错误,不需要 if(false)
。那将永远不会被评估,并且在那时没有 return 的功能。而且您的脚本标签缺少结束符 >
.
从 jQuery 1.7 开始,.on
优于 .bind
。
要从服务器重新加载,而不是缓存,您需要reload(true)
您的超时代码看起来没问题。
我不是 Muse 专家,但您需要使用 {param} 表示法将参数添加到您的代码中。
通过一个更简单的示例(见下文)发现,要在字符串比较中使用 Muse 参数,您需要将其用引号引起来: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>