js嵌入html页面 的内置方法和属性值的一致,你知道吗?

  首先,在页面中嵌入视频的HTML代码为:

  复制代码代码如下:

  其中,同时使用object和embed标签是为了兼容更多的浏览器,但请注意保持两种标签下相同属性值的一致。

  PS:”;

  youku.innerHTML = htmlstr;

  }

  jsp页面嵌入html页面_iframe嵌入html页面_js嵌入html页面

  ②在div容器内放置一个iframe,这样可以动态刷新iframe内的页面而不影响当前父页面。

  具体的代码就不写了js嵌入html页面,大体的思路有:

  1.采用url传值。

  2.父页面或子页面弄个隐藏域动态存放地址供子页面获取。

  3.采用①方法重置子页面中object对象。

  4.其他诸如window.open方法就绕远了,不推荐。

  jsp页面嵌入html页面_iframe嵌入html页面_js嵌入html页面

  至此,嵌入和控制视频切换都成功实现了。但是无意间,我发现一个问题:

  切换到新的视频之后,点刷新或按F5等任何方式的刷新页面,都会弹出一个“缺少对象”的脚本错误。找到错误代码,发现是Flash的内部脚本错误:

  function __flash__removeCallback(instance, name) {

  instance[name] = null;

  }

  如果页面里使用了flash,并且flash里使用了flash.external.ExternalInterface.addCallback 方法,刷新网页时就会报__flash__removeCallback的js错误:缺少对象(Line 53),(Jscript-scriptblock)。此函数的调用处为:

  iframe嵌入html页面_js嵌入html页面_jsp页面嵌入html页面

  __flash__removeCallback(document.getElementById(""), "dewprev");

  很显然,这里document.getElementById("")返回的是null,才会导致__flash__removeCallback报错,个人认为这个flash的内置方法或许应该这么写:

  function __flash__removeCallback(instance, name) {

  if (instance != null) { instance[name] = null; }

  }

  有人测试发现,document.getElementById("")这里是获取flash控件Object对象的id/name属性的,之所以出现这个错误,是因为没给Object设置id/name属性,设置后就不会出错了。可事实上我的object都是带着id/name属性的,因此不敢苟同此原因。由此看来,这个加id/name的方法可以解决部分人的问题,引起此问题的原因并非仅此一种。

  js嵌入html页面_jsp页面嵌入html页面_iframe嵌入html页面

  尔后,我苦苦找寻了好久,终于在一个外国网站上找到了解决的办法,是一个叫Dave Smith的人写的,我在他代码的基础上做了点改进,减少了页面不断执行代码的压力。他提供的代码如下:

  复制代码代码如下:

  他的意思大体就是:重写flash内部的这个脚本可以解决当前的问题js嵌入html页面,但是当object对象加载后某个时间,flash内部的这个脚本又会覆盖你重写的这个函数。因此不能保证播放器到时会调用你重写的函数。为了达到这个目的,他将函数设为每10毫秒覆盖一下flash内部提供的这个函数。这样问题就解决了。同时他将这段代码加以简化形成了以下两个“版本”:

  简化版本一:稍简

  复制代码代码如下:

  简化版本二:超简

  复制代码代码如下:

  我想了会,理理思路:

  这错误是在刷新页面时产生的,页面刷新的过程就是旧页面的消亡和新页面的重载。理论上重载新页面不会有什么问题,那么错误就是产生在旧页面消亡前的“善后”工作中。我只要在页面消亡前将flash内部这个回调函数重写,就能达到同样的目的,代码如下,测试通过。

  复制代码代码如下:

  /解决视频切换内部脚本错误/

  —-想了解HTML页面嵌入视频与JS控制切换视频示例详解分享 的全部内容且更多的html语言教程关注

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1668
0 评论
632

发表评论

!