Chrome扩展中的HTML5视频元素和jQuery';s内容脚本
在控制台中,如果我使用:Chrome扩展中的HTML5视频元素和jQuery';s内容脚本,jquery,html,video,google-chrome-extension,Jquery,Html,Video,Google Chrome Extension,在控制台中,如果我使用:$(“#player>video”).videoWidth我得到的结果是:1920(或其他) 但是在Chrome扩展的内容脚本中,console.log($(“#播放器api视频”).videoWidth)生成结果未定义。要获取编号1920我必须使用console.log($(“#player api video”).get(0.videoWidth) 同样,在控制台上,我可以执行以下操作: video = $("#player > video") video.st
$(“#player>video”).videoWidth
我得到的结果是:1920
(或其他)
但是在Chrome扩展的内容脚本中,console.log($(“#播放器api视频”).videoWidth)代码>生成结果未定义
。要获取编号1920
我必须使用console.log($(“#player api video”).get(0.videoWidth)代码>
同样,在控制台上,我可以执行以下操作:
video = $("#player > video")
video.style.width = "1920px"
和css样式的宽度将在视频元素中更改
代码$(“#播放器api视频”).css(“宽度”,“视频宽度+”px“)代码>不适用于内容脚本。这很奇怪,因为$(“#播放器api视频”).css(“缩放”、“重置”)
确实如此。因此,元素的样式宽度和高度特别奇怪。通过进一步观察,我们可以看到这一点:
从内容脚本中,我必须设置$(“#播放器api视频”).get(0).style.width=“1920px”
或使用video=$(“#播放器api视频”).get(0)
并设置video.style.width
。这是因为$(“#播放器api视频”)
没有样式属性。但是,从任何foo.get(0)
设置style.width
不会更改元素的样式
最后,如果我尝试使用方法$(“#player>video”).width
直接从控制台中,我发现它是一个属性(并且没有设置为任何值)。设置此属性对元素的样式没有影响,但至少有影响。但是从内容脚本来看,它是一种对元素没有影响的方法
为什么HTML5VideoElement的行为是这样的?通常,元素不需要使用.get(0)
来检查或操作
如何从Chrome扩展的内容脚本更改HTML5视频元素的元素样式(宽度和高度)?我已经找到了一半问题的答案
var video = $("#player-api video").get(0);
for (method in video) { 1; } // ensure all methods are loaded up
var css = video.style.cssText;
video.style.cssText = css.replace(/width:\ \d+\S+/, "width: " + video.videoHeight + 'px;').replace(/height:\ \d+\S+/, "height: " + video.videoWidth + 'px;');
将更改内容脚本中视频元素的实际样式和观察到的宽度和高度。这足以满足我的需要,但并不能真正解释发生了什么
如果有人来回答为什么视频元素的.style.width
可以从控制台成功地更改元素的样式,但是.style.width
可以从内容脚本中指定,我会将答案授予他们。否则,我将在两天内为我在检查对象时找到的.style.cssText
解决方案索赔