gpt4 book ai didi

javascript - 如何为 jsviews 创建自定义属性处理程序?

转载 作者:行者123 更新时间:2023-12-03 03:23:45 31 4
gpt4 key购买 nike

我想使用JsViews播放html5视频内容,如下所示:

html:

<div id="result"></div>
<script id="myTmpl" type="text/x-jsrender">
<video autobuffer controls data-link="muted{:muted}">
<source id="mp4" data-link="src{:src}" type="video/mp4">
</video>
<button id="muted">change muted</button>
</script>

js:

var data = {
src: "http://grochtdreis.de/fuer-jsfiddle/video/sintel_trailer-480.mp4",
muted: true
};

var myTmpl = $.templates("#myTmpl");

myTmpl.link("#result", data);

$("#result").on("click", "#muted", function () {
$.observable(data).setProperty("muted", !data.muted);
});

example on jsfidle

可以看出,默认处理的属性 muted 看起来像 muted=truemuted=false,但在 HTML 中 specifications - 属性“静音”可能是也可能不是。也就是说,to 应该充当 disable 的属性:Data-linking the disabled and title attributes .

也许有某种方法可以自定义(替代)jsviews 中的标准 html 属性处理程序?

最佳答案

您可以在 muted 时删除静音属性。是 false ,通过写:

<video autobuffer controls data-link="muted{:muted||null}">

但是,这不会使事情按您想要的方式工作,因为动态删除或添加静音属性实际上不会使视频控件静音/取消静音。为此,您需要将 muted 元素上的 muted 属性设置为 true/false。

此外,当用户单击视频元素 UI 上的内置静音控件时,您希望它能够明显地修改您的 muted数据属性。所有这些都可以使用以下代码来实现:

var video = $("video");

$.observe(data, "muted", function(ev, eventArgs) {
video[0].muted = eventArgs.value;
})

video.on("volumechange", function() {
$.observable(data).setProperty("muted", video[0].muted);
});

这是 jsfiddle 的更新版本,进行了更改:http://jsfiddle.net/ck9sr49L/3/ .

我打算在下一个 JsViews 中添加一个新功能,以便能够选择数据链接到 HTML 元素上的属性,而不是相应的属性。语法为 data-link="prop-muted{:...}" (类似于数据链接到 CSS 属性 data-link="css-muted{:...}" )。通过该更新,您将能够简化事情并编写以下内容:

模板:

<video autobuffer controls data-link="prop-muted{:muted}">
<source id="mp4" data-link="src{:src}" type="video/mp4"/>
</video>
<label>Muted: <input type="checkbox" data-link="muted"/></label>

代码:

var data = {
src: "http://grochtdreis.de/fuer-jsfiddle/video/sintel_trailer-480.mp4",
muted: true
};

var myTmpl = $.templates("#theTmpl");

myTmpl.link("#result", data);

$("video").on("volumechange", function(ev) {
$.observable(data).setProperty("muted", ev.target.muted);
});

关于javascript - 如何为 jsviews 创建自定义属性处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445559/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com