如何以编程方式获取正在播放的YouTube视频的字幕?
最初,我尝试通过YouTube API离线进行此操作,但似乎 YouTube禁止获取您不是所有者的视频的字幕。
现在,我正在尝试在线进行。我没有找到用于字幕的YouTube Player Api方法,我也试图通过videojs播放器的方式将 YouTube字幕作为TextTrack与TextTrack一起使用,但是以下方法不起作用:
<html>
<head>
<link href="//vjs.zencdn.net/4.12/video-js.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="//vjs.zencdn.net/4.12/video.js"></script>
<script type="text/javascript" src="../lib/youtube.js"></script>
</head>
<body>
<video id="myvideo"
class="video-js vjs-default-skin vjs-big-play-centered"
controls
preload="auto"
width="640"
height="360">
</video>
<script type="text/javascript">
var myvideo = videojs(
"myvideo",
{
"techOrder": ["youtube"],
"src": "https://www.youtube.com/watch?v=jNhtbmXzIaM"
},
function() {
console.log('Tracks: ' + this.textTracks().length); //zero here :(
/*var aTextTrack = this.textTracks()[0];
aTextTrack.on('loaded', function() {
console.log('here it is');
cues = aTextTrack.cues();
console.log('Ready State', aTextTrack.readyState())
console.log('Cues', …Run Code Online (Sandbox Code Playgroud) 备选问题版本:在Polymer元素定义中添加时,如何防止HTML实体被转义?
因此,假设这个简化的例子(所有包含的聚合物库都添加在实际代码中):
元素定义
<polymer-element name="x-test" attributes="val">
<template>
<div>{{shownVal}}</div>
</template>
<script>
Polymer( 'x-test', {
shownVal: '',
valChanged: function(){
this.shownVal = this.val + ' &';
}
});
</script>
</polymer-element>
Run Code Online (Sandbox Code Playgroud)
元素用法
<x-test val="123"></x-test>
Run Code Online (Sandbox Code Playgroud)
这将产生如下输出:
123&
版本:聚合物0.1.2
我需要更改/添加什么输出123 &?
或者这是一种什么样的错误,我应该让Polymer人知道吗?
我知道,我可以添加实体<template>,这可以工作,但我有一些代码,它修改输入属性,需要使用实体.
<x-test val="123 &"></x-test>
Run Code Online (Sandbox Code Playgroud)
一切都很好.
在阅读了这个问题之后,用户警告说这种编码html的方法是不安全的
return $('<div/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)
"不要使用jQuery.html().text()来解码html实体,因为它不安全,因为用户输入永远不能访问DOM"
"我建议使用更安全,更优化的功能"
此方法的目的是获取编码输入,即Fish & chips产生未编码的输出,即Fish & Chips
据我了解,他们声称,对于某些价值encodedText,可以执行javascript.我试图重现此设置encodedText来<script>alert(1)</script>和其他一些简单的攻击,是无法找到的XSS漏洞的任何迹象.
我的问题是:使用时,任何浏览器中是否存在任何可证明的xss漏洞 $('<div/>').html(encodedText).text()
好的。这可能是一个愚蠢的问题,但我被困住了。
在我的 javascript 中,我有一个字符串变量,其中'包含代表单引号的内容。例如some_text_'_some_text
现在,我想用实际的单引号替换它,例如some_text_'_some_text。
显而易见的方法是使用str.replace(/'/g,"'"),但问题是我将此 JavaScript 代码写入第三方软件,当我保存脚本时,该代码会替换'为。'因此,如果我再次打开脚本,它会显示str.replace(/'/g,"'"). 因此,当脚本运行时,它无法正确执行替换操作。
有人会问为什么我需要这个替换才能工作?
原因是这个变量被传递来构建 SQL 查询,而我不想'在我的查询中使用。我希望它是'我可以在 SQL 中转义的。
编辑
所以,我意识到这种行为的原因,潜在的回答者可能想考虑到这一点。我使用的软件将其所有文件存储为 XML,包括我编写的 javascript 代码。因此,它在保存时将所有特殊字符转换为 HTML 代码,并在读取时解析它们。这就是'转换为'.
我需要在 javascript 中解码 html。例如:
var str = 'apple & banana';
var strDecoded = htmlDecode(str); // I expect 'apple & banana'
Run Code Online (Sandbox Code Playgroud)
不能保证给定的 str 已经被编码并且常见的 jquery 和 DOM 技巧容易受到 XSS 攻击:
var attackStr = '&</textarea><img src=x onerror=alert(1)>ハローワールド'; // if you see 1 alerted, it means it is XSS vulnerable
var strDecoded; // I wish to get: &</textarea><img src=x onerror=alert(1)>???????
strDecoded = $('<div/>').html(attackStr).text(); // vulnerable in all browsers
strDecoded = $('<textarea/>').html(attackStr).text(); // vulnerable in ie 9 and firefox
var dv = document.createElement('div');
dv.innerHTML …Run Code Online (Sandbox Code Playgroud) 以下面的字符串为例:
“A profile of Mr. T, the A Team’s most well known member.”
如何使用 javascript 替换 unicode 字符编码并将其转换为以下内容:
"A profile of Mr. T, the A Team's most well known member."
我有一个元素div与属性contenteditable ="true".这个div的行为类似于textarea元素.
<div v-on:keyup.enter="SendMensage" v-html="msg" contenteditable="true"></div>
Run Code Online (Sandbox Code Playgroud)
我的代码:
data() {
return {
msg: '',
}
},
methods: {
enviaMensagem() {
console.log(this.msg);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是数据绑定不起作用.div中输入的内容不反映变量.有谁知道它能是什么?