GVKun编程网logo

javascript – 覆盖在ipad中动态插入的视频标记(js添加视频)

2

在这篇文章中,我们将带领您了解javascript–覆盖在ipad中动态插入的视频标记的全貌,包括js添加视频的相关情况。同时,我们还将为您介绍有关IE8中动态创建script标签onload无效的解

在这篇文章中,我们将带领您了解javascript – 覆盖在ipad中动态插入的视频标记的全貌,包括js添加视频的相关情况。同时,我们还将为您介绍有关IE8中动态创建script标签onload无效的解决方法_javascript技巧、javascript - 关于iscroll.js滚动容器中动态插入的元素无法滚动的问题,该如何解决?、JavaScript – HTML5视频“黑屏”在iPad上、javascript – iPad触摸标记上的事件的知识,以帮助您更好地理解这个主题。

本文目录一览:

javascript – 覆盖在ipad中动态插入的视频标记(js添加视频)

javascript – 覆盖在ipad中动态插入的视频标记(js添加视频)

我目前正在开发支持ipad的视频播放器.
它更像是一个jquery插件.它在桌面上运行良好,我甚至设法在ipad上添加我的自定义控件.
到现在为止还挺好.
问题是我正在动态创建和插入视频元素,这有点混淆了ipad.我遵循这种方法,因为我发现(经过几个小时),如果你试图将视频包装($.wrap)到一个容器中,视频就会崩溃.
插入视频后,它几乎正常运行(可播放并响应事件),但它的位置/显示属性混乱:我无法在其上添加任何叠加.这是一个问题,因为我希望我的控件能够显示在视频之上.

此外,视频本身不响应正常的touchmove touchstart touchend事件.经过一些研究后发现,如果您没有打开默认控件,视频会捕获所有事件(iPad touch events on <video> tag).
我的第二个问题是,在包含默认控件之后,视频元素似乎仍然忽略了我的事件处理程序.

所以,我的问题是(都只在Ipad案例中):

>你有没有遇到过这个问题,当然如果你这样做了,你是如何解决这个问题的?
>只做硬编码的视频元素会触发事件吗?

解决方法

经过一番挖掘,我找到了答案.
看起来 this stackoverflow question中没有标记的答案是关键.
所以,正如 Jaffa The Cake(我有一桶感谢)sais:“你可以通过提供视频元素-webkit-transform-style:preserve-3d来修复动态创建的视频的z-index”,唯一的解决方法是使用css3属性-webkit-transform-style:preserve-3d. 这样,可以在视频顶部放置叠加层,可以处理所有事件(例如播放/暂停).

IE8中动态创建script标签onload无效的解决方法_javascript技巧

IE8中动态创建script标签onload无效的解决方法_javascript技巧

本文实例讲述了ie8中动态创建script标签onload无效的解决方法。分享给大家供大家参考。具体分析如下:

今天做项目,发现一个奇怪的问题,动态创建的script标签在IE8下无法触发onload事件。

代码如下:

复制代码 代码如下:
var loadJs = function(src, fun){
    var script = null;
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = src;
    if(typeof fun === "function"){
        script.onload = fun;
    }
 
    document.getElementsByTagName("head")[0].appendChild(script);
};
 
loadJs("js/jquery-1.11.0.min.js", function(){
    console.log("From jQuery");         
});
 
loadJs("test.js", function(){
    console.log("From test.js");         
});
test.js:
console.log(typeof jQuery);

运行结果:
复制代码 代码如下:
undefined  // test.js运行时,jQuery还未加载
>> typeof jQuery  // 从控制台上运行,却找到了jQuery对象,证明加载顺序问题
"function"

并且以上代码中script.onload并没有执行,明明代码已经加载进来了,为什么还是onload不执行呢?到网上一查发现众多前端开发人员都遇到这个棘手的问题,于是找到了一些替补方案,如下:
复制代码 代码如下:
var loadJs = function(src, fun){
    var script = null;
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = src;
    if(typeof fun === "function"){
        script.onreadystatechange = function() {
            var r = script.readyState;
            console.log(src + ": " + r);
            if (r === ''loaded'' || r === ''complete'') {
                script.onreadystatechange = null;
                fun();
            }
        };
    }
 
    document.getElementsByTagName("head")[0].appendChild(script);
};

执行结果:
复制代码 代码如下:
undefined 
js/jquery-1.11.0.min.js: loading 
test.js: complete 
From test.js 
js/jquery-1.11.0.min.js: loaded 
From jQuery

执行步骤为,这下类似于onload的功能算然算是找到了,但却有一个问题,它不是按顺序加载的,当jQuery文件loading的时候,test.js已经complete了,并且第一行就先执行了test.js的内容。因为test.js先于jQuery执行,所以才打出undefined。于是我们可以改写成这样,让它线性加载:
复制代码 代码如下:
loadJs("js/jquery-1.11.0.min.js", function(){
 
    console.log("From jQuery"); 
 
    loadJs("test.js", function(){
        console.log("From test.js");         
    });       
});
执行结果:
复制代码 代码如下:
js/jquery-1.11.0.min.js: loading 
js/jquery-1.11.0.min.js: loaded 
From jQuery 
function
test.js: complete 
From test.js
这次,执行的顺序完全是按照我们预订的顺序来了,但以上代码看着很别扭,需要层层嵌套,于是又发现了这种写法:
复制代码 代码如下:
var loadJs = function(src, fun){
    var script = null;
    script = document.createElement("script");
    script.type = "text/javascript";
    script.src = src;
    if(typeof fun === "function"){
        script.onreadystatechange = function() {
            var r = script.readyState;
            console.log(src + ": " + r);
            if (r === ''loaded'' || r === ''complete'') {
                script.onreadystatechange = null;
                fun();
            }
        };
    }
 
    document.write(script.outerHTML);
    //document.getElementsByTagName("head")[0].appendChild(script);
 
};
 
loadJs("js/jquery-1.11.0.min.js", function(){
    console.log("From jQuery"); 
});
 
loadJs("test.js", function(){
    console.log("From test.js");         
});
执行结果的顺序,也不相同:
复制代码 代码如下:
function
js/jquery-1.11.0.min.js: loaded 
From jQuery 
test.js: loaded 
From test.js
如果你改变一下加载顺序
复制代码 代码如下:
loadJs("test.js", function(){
    console.log("From test.js");         
});
 
loadJs("js/jquery-1.11.0.min.js", function(){
    console.log("From jQuery"); 
});
执行结果也就不一样,类似顺序加载:
复制代码 代码如下:
undefined 
test.js: loaded 
From test.js 
js/jquery-1.11.0.min.js: loaded 
From jQuery

希望本文所述对大家的javascript程序设计有所帮助。

javascript - 关于iscroll.js滚动容器中动态插入的元素无法滚动的问题,该如何解决?

javascript - 关于iscroll.js滚动容器中动态插入的元素无法滚动的问题,该如何解决?

直接写在html里面的内容能滚动,用js动态插入的html结构则无法滚动,是怎么回事?

回复内容:

直接写在html里面的内容能滚动,用js动态插入的html结构则无法滚动,是怎么回事?

iScroll对象有个方法叫做refresh(),插入html后调用该方法即可

你好楼主,我之前也遇到过这个问题,你只需要先将html结构用js插入页面后再实例化iscroll就可以了,希望可以帮到你!

like this

   $(''#cart-pop'').html(str);
   stateMap.myScroll3 = new IScroll(''#wrapper-cart'', { mouseWheel: true, click: true,probeType: 2});
登录后复制

这种情况是因为,初始化iscroll时,scroller高度并不是固定的。你可以在加载完你的dom后初始化iscroll。比如把iscroll的初始化方法写在ajax的success函数里面。

立即学习“Java免费学习笔记(深入)”;

让iscroll重新计算一下高度就好了

JavaScript – HTML5视频“黑屏”在iPad上

JavaScript – HTML5视频“黑屏”在iPad上

我正在建立一个内置视频的网站.这个网站需要照顾iPad用户,但是我现在在使用ol视频标签时遇到麻烦.我有一个视频在浏览器中播放不错,但不幸的是在iPad上.

我只是用iPad屏幕黑屏,没有任何错误信息.

这是我的视频代码

<video id="movie" width="790" height="250" controls >
    <source src="anim/intro.ipad.mp4"  type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"'>
    <source src="anim/intro.webm" type='video/webm; codecs="vp8,vorbis"'>
    <source src="anim/intro.theora.ogv"  type='video/ogg; codecs="theora,vorbis"'>
</video>
<script>
    var v = document.getElementById("movie");
    v.onclick = function() {
        if (v.paused) {
            v.play();
        } else {
            v.pause();
        }
    };
</script>

这些视频都是在关于HTML5视频的教程之后创建的.它们都使用Miro Video转换器上的首选iPad设置进行编码.

只是这个事情(我不知道会)会在iPad模拟器上测试视频.

无论我做什么,我都无法让视频播放:

解决方法

你确定你的编码是否正确?
尝试这样来测试它:

<video src="anim/intro.ipad.mp4" controls>  
      Your browser does not support the video element.  
</video>

javascript – iPad触摸标记上的事件

javascript – iPad触摸标记上的事件

我正在iPad上构建一个支持 javascript的画廊,可以显示图像和视频.要浏览图库,您可以向左或向右滑动(类似于iPad的照片应用程序).但是,在< video>上滑动时,我的触摸事件都不起作用.元件.它似乎接管了我的触摸事件,即使是可能具有更高z-index的元素也是如此.我尝试添加一个调用e.preventDefault()的touchmove处理程序,但这似乎也不起作用.有没有其他人遇到这个问题并找到了解决方案?

解决方法

您的触摸事件被播放器的默认控件吸收.如果将视频元素的控件设置为false,则可以完全控制视频元素上的事件.但这样做意味着你必须实现自己的自定义控件,这不是很难.

关于javascript – 覆盖在ipad中动态插入的视频标记js添加视频的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于IE8中动态创建script标签onload无效的解决方法_javascript技巧、javascript - 关于iscroll.js滚动容器中动态插入的元素无法滚动的问题,该如何解决?、JavaScript – HTML5视频“黑屏”在iPad上、javascript – iPad触摸标记上的事件的相关信息,请在本站寻找。

本文标签: