IE에서 JavaScript를 사용하여 <object> 태그를 동적으로 추가하려면 어떻게 해야 합니까?
-
07-07-2019 - |
문제
브라우저에 따라 적절한 ActiveX/플러그인을 처리하려면 Firefox용 embed 태그나 JavaScript가 포함된 Internet Explorer용 개체 태그를 추가해야 합니다.이 경우 플러그인이 누락될 수 있으므로 다운로드해야 합니다.Firefox에 동적으로 추가된 embed 태그가 예상대로 작동합니다.Internet Explorer에 동적으로 추가된 개체 태그는 전혀 아무 작업도 수행하지 않는 것 같습니다.객체 태그가 제대로 작동하려면 다음 속성이 필요합니다.
id ="SomeId"
classid = "CLSID:{GUID}"
codebase = "http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1"
일반적인 작업 아이디어나 방법이라도 좋을 것입니다.
감사해요!
해결책
나는 이와 동일한 작업을 수행하고 OBJECT 태그에 필요한 모든 HTML을 JavaScript의 문자열에 배치하고 div 태그의 innerHTML을 OBJECT HTML로 바꾸면 IE에서 잘 작동합니다.
// something akin to this:
document.getElementById(myDivId).innerHTML = "<OBJECT id='foo' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'.....etc";
작동해야 합니다. 저에게는 아주 좋습니다. Windows Media Player를 페이지에 삽입하는 데 사용합니다.
업데이트:페이지의 로드 이벤트에서 실행되거나 사용자의 클릭에 대한 응답으로 실행되는 이벤트 핸들러를 통해 페이지가 로드된 후 위 코드를 실행합니다.당신이 해야 할 유일한 일은 빈 DIV 태그나 해당 요소의 태그를 통해 HTML 코드를 삽입할 수 있는 다른 유형의 태그를 갖는 것입니다. innerHTML
재산.
업데이트:내가 생각했던 것보다 더 많은 도움이 필요한 것 같군요?아마도 이것이 도움이 될 것입니다:
BODY 태그를 다음과 같이 만드세요: <body onload="loadAppropriatePlugin()">
페이지 어딘가에 이 항목을 로드하려는 위치에 빈 DIV 태그가 있어야 합니다. id
"Foo" 같은 것의 속성입니다.
다음과 같은 코드가 있습니다. <script>
당신의 태그 <head>
부분:
function getIEVersion() { // or something like this
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
return ((msie > 0) ? parseInt(ua.substring(msie+5, ua.indexOf(".", msie))) : 0);
}
function loadAppropriatePlugin() {
if(getIEVersion() != 0) { // this means we are in IE
document.getElementById("Foo").innerHTML = "<OBJECT id='foo' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'.....etc";
} else {
// if you want to maybe do the same for FF and load that stuff...
}
}
그게 도움이 되나요?
다른 팁
var object = document.createelement('object')
object.setAttribute('id','name')
object.setAttribute('clssid','CLSID:{}')
다른 매개 변수에 대해서도 동일합니다.
두 가지 방법.
1) 문서를 작성하십시오. 원하는 곳에 write
<script type="text/javascript">
<!--
document.write("<object id=\"SomeId\" classid=\"CLSID:{GUID}\" codebase=\"http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1\"></object>");
-->
</script>
2) 태그의 InnerHTML 속성을 편집하십시오.
<div id="my-div"></div>
<script type="text/javascript">
<!--
document.getElementById("my-div").innerHTML = "<object id=\"SomeId\" classid=\"CLSID:{GUID}\" codebase=\"http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1\"></object>";
-->
</script>
편집하다: JavaScript가 활성화 된 사람들은 객체를 볼 수 없기 때문에 JavaScript를 사용하지 않는 것이 가장 좋습니다. HTML에 배치하는 것이 좋습니다.