이 글에서는 HTML 페이지에 동영상을 삽입하는 방법과 JS를 사용하여 동영상 전환을 제어하는 방법을 자세히 소개합니다. 자세한 내용은 아래를 참조하세요.
먼저, 페이지에 동영상을 삽입하기 위한 HTML 코드는
코드는 다음과 같습니다.
<p id="youku" class="youku"> <object id="obx" name="obx" width="290" height="260"> <param name="movie" value="http://www.tudou.com/v/6HJvxxkarzk/&resourceId=0_04_11_19/v.swf"></param> <param name="allowFullScreen" value="true"></param> <param name="allowscriptaccess" value="always"></param> <param name="wmode" value="opaque"></param> <embed src="http://www.tudou.com/v/6HJvxxkarzk/&resourceId=0_04_11_19/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="290" height="260"></embed> </object> </p>
그 중 object 및 embed 태그는 에서 사용됩니다. 동시에 더 많은 브라우저와 호환되지만 두 태그에서 동일한 속성 값을 일관되게 유지하도록 주의하시기 바랍니다.
PS:
코드는 다음과 같습니다.
/*功能:动态切换视频*/ function setvideo(url){ var youku = document.getElementById("youku"); var htmlstr = "<object id='obx' name='obx' width='290' height='260'>"; htmlstr += "<param name='movie' value='"+url+"'></param>"; htmlstr += "<param name='allowFullScreen' value='true'></param>"; htmlstr += "<param name='allowscriptaccess' value='always'></param>"; htmlstr += "<param name='wmode' value='opaque'></param>"; htmlstr += "<embed src='"+url+"' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' wmode='opaque' width='290' height='260'></embed>"; htmlstr += "</object>"; youku.innerHTML = htmlstr; }
②p 컨테이너에 iframe을 배치하여 현재 상위 페이지에 영향을 주지 않고 iframe의 페이지를 동적으로 새로 고칠 수 있도록 합니다. .
구체적인 코드는 작성하지 않겠습니다.
1. URL을 사용하여 값을 전달합니다.
2. 상위 페이지 또는 하위 페이지는 숨겨진 도메인을 생성하여 하위 페이지가 획득할 주소를 동적으로 저장합니다.
3. 서브 페이지에서 개체 개체를 재설정하려면 ① 방법을 사용하십시오.
4. window.open과 같은 다른 방법은 거리가 멀고 권장되지 않습니다.
이 시점에서 비디오 전환 삽입 및 제어가 성공적으로 구현되었습니다. 그런데 우연히 문제를 발견했습니다.
새 동영상으로 전환한 후 어떤 방식으로든 새로고침을 클릭하거나 F5를 눌러 페이지를 새로고침하면 '개체 누락' 스크립트 오류가 팝업됩니다. 오류 코드를 발견했는데 Flash의 내부 스크립트 오류였습니다.
function __flash__removeCallback(instance, name) {
instance[name] =
}
Flash가 설치된 페이지에서 사용되는 경우 flash.external.ExternalInterface.addCallback 메서드가 Flash에서 사용됩니다. 웹 페이지를 새로 고칠 때 __flash__removeCallback의 js 오류가 보고됩니다. 객체 누락(53행), (Jscript- 스크립트 블록). 이 함수의 호출 위치는 다음과 같습니다.
__flash__removeCallback(document.getElementById(""), "dewprev");
분명히 document.getElementById("")는 여기서 null을 반환합니다. __flash__removeCallback을 사용하여 오류를 보고합니다. 저는 개인적으로 플래시의 내장 메서드를 다음과 같이 작성해야 한다고 생각합니다.
function __flash__removeCallback(instance, name) {
if (instance != null) { 인스턴스 [name] = null }
}
여기서 document.getElementById("")가 플래시 컨트롤 개체의 id/name 속성을 가져오기 위한 것임을 테스트한 결과 이 오류가 발생했습니다. Object./name 속성에 ID가 설정되어 있지 않기 때문에 설정 후 오류가 발생하지 않습니다. 그러나 사실 내 모든 개체에는 id/name 속성이 있으므로 이러한 이유에 동의하지 않습니다. 이러한 관점에서 볼 때, 이 ID/이름을 추가하는 방법은 일부 사람들의 문제를 해결할 수 있으며 이것이 이 문제의 유일한 원인은 아닙니다.
그 후 오랫동안 열심히 검색한 결과 마침내 외국 웹사이트에서 해결책을 찾았습니다. Dave Smith라는 사람이 작성한 것입니다. 그의 코드를 기반으로 몇 가지 개선을 하여 부담을 줄였습니다. 페이지에서 지속적으로 코드를 실행합니다. 그가 제공한 코드는 다음과 같습니다.
코드는 다음과 같습니다.
<script type="text/javascript"> (function(){ var setRemoveCallback = function(){ __flash__removeCallback = function(instance, name){ if (instance){ instance[name] =null; } }; window.setTimeout(setRemoveCallback, 10); }; setRemoveCallback(); })(); </script>
그가 기본적으로 의미하는 바는 이 스크립트를 플래시 내부에서 다시 작성하면 현재 문제를 해결할 수 있다는 것입니다. 하지만 객체가 로드되면 플래시 내부의 스크립트가 다시 작성한 함수를 덮어쓰게 됩니다. 따라서 때가 되면 플레이어가 다시 작성한 함수를 호출할 것이라는 보장이 없습니다. 이 목표를 달성하기 위해 그는 10밀리초마다 플래시 내부에 제공되는 기능을 재정의하는 기능을 설정했습니다. 이 문제는 해결되었습니다. 동시에 그는 이 코드를 단순화하여 다음 두 가지 "버전"을 형성했습니다.
단순화된 버전 1: 약간 단순화
코드는 다음과 같습니다:
<script type="text/javascript"> var setRemoveCallback = function() { __flash__removeCallback = function(instance, name) { if(instance) { instance[name] = null; } }; window.setTimeout(setRemoveCallback, 10); }; setRemoveCallback(); </script>
Simplified version 2: Super simple
코드는 다음과 같습니다.
<script type="text/javascript">(function(){var s=function(){__flash__removeCallback=function(i,n){if(i)i[n]=null;};window.setTimeout(s,10);};s();})();</script>
잠깐 생각하고 합리화했습니다.
이것은 페이지를 새로 고칠 때 오류가 발생했습니다. 페이지 새로 고침 과정은 이전 페이지가 종료되고 새 페이지가 다시 로드되는 것입니다. 이론적으로는 새 페이지를 다시 로드하는 데 문제가 없으므로 이전 페이지가 죽기 전에 "사후 관리" 작업에서 오류가 발생합니다. 페이지가 종료되기 전에 플래시 내부에 콜백 함수를 다시 작성하면 동일한 목적을 달성할 수 있습니다. 코드는 다음과 같으며 테스트가 통과됩니다.
코드는 다음과 같습니다.
/*解决视频切换内部脚本错误*/ <script type="text/javascript"> function endcall(){var s=function(){__flash__removeCallback=function(i,n){if(i)i[n]=null;};window.setTimeout(s,10);};s();} window.onbeforeunload = endcall; </script>
HTML 페이지 삽입 동영상 및 JS 컨트롤 전환 동영상 예시에 대한 자세한 예시는 PHP 중국어 웹사이트를 참고하세요. 관련 기사!