我希望使用angularjs动态设置视频播放器的属性。
<video id="youtube" class="video-js video-js-responsive vjs-default-skin vjs-big-play-centered" controls preload="none" data-width="640" data-height="360" data-setup=''></video>
在我的控制器中
var myEl = angular.element( document.querySelector('#youtube'));
myEl.attr('data-setup','{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}');
数据设置应该是单引号
data-setup='{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}'
但该属性是用双引号设置的。
data-setup="{ "techOrder": ["youtube"], "src":"https://www.youtube.com/watch?v=yPIvqJsCOSo"}"
如何使用单引号设置属性?
我已阅读过这些问题How to escape a single quote ( ' ) in JavaScript?
Single quote escape in JavaScript function parameters
但他们不适用
答案 0 :(得分:1)
试试这个\"
代替"
myEl.attr('data-setup',\"{ \"techOrder\": [\"youtube\"], \"src\":\"https://www.youtube.com/watch?v=yPIvqJsCOSo\"}");
另请参阅 Escaping Characters in Javascript
字符&#34;(引号),&#39;(单引号)和/(正斜杠) 是javascript代码本身的组成部分。所以取决于你的方式 构造了javascript,这些字符中至少有两个必须是 在javascript中使用时转义。要做到这一点,\(反斜杠)是 放在每个上述字符之前。没有这些 向后斜线,你的脚本很有可能 根本不会出现。
如果您希望显示&#34;显示的文本区域中的(引号) 你的javascript,在字符前面加\(反斜杠)。要么 你也可以使用角色实体而不是角色 本身。例如,如果要显示句子
答案 1 :(得分:1)
修改强> 带有角度的注视视频:
检查这个jsfidle我准备了4u! https://jsfiddle.net/ok950wtj/
我认为让它运行起来并不复杂。播放暂停按钮更改,视频似乎已加载/检测到!
我检查了你的代码,我认为你正在尝试使用Video.js库。在他们的网页中,他们说:
动态加载HTML的替代设置
如果您的网页或应用程序动态加载视频标记(ajax,appendChild等),以便在加载页面时可能不存在,则您需要手动设置播放器而不是依赖在data-setup属性上。为此,首先从标记中删除data-setup属性,以便在初始化播放器时不会产生混淆。接下来,在加载Video.js javascript库之后运行以下javascript,并在将视频标记加载到DOM之后运行
然后,您似乎需要以这种方式调用视频初始化函数,而不是尝试将数据设置与引用问题一起使用。
希望你能解决它。
function loadvideo(data-set)
{
videojs("example_video_1", data-set, function(){
// Player (this) is initialized and ready.
});
}