Avatar billede killifish Nybegynder
28. maj 2005 - 04:14 Der er 6 kommentarer

Udskifte <object> med javascript (quicktime)

Jeg vil udskifte et object element med javascript sådan at jeg kan afspille flere quicktime-film samme sted. Mit javascript virker fint i Opera/Win, Firefox/Win, Firefox/Mac og Safari/Mac, men ikke i IE/Win.

Min test-side ligger på http://andreas.haugstrup.info/qt/
Og javascriptet: http://andreas.haugstrup.info/qt/qt.js

I IE giver scriptet følgende fejl når man klikker på et af linkene i bunden:

Line: 34
Char: 2
Error: Invalid argument.
Code: 0
URL: http://andreas.haugstrup.info/qt/

Meningen er at alle tre film skal afspilles samme sted. Det mit script gør er at det først fjerne object elementet, og så indsætter et nyt.

Hvordan kan jeg få det her til at virke i IE/Win?
Avatar billede roenving Novice
28. maj 2005 - 04:19 #1
Måske kan du ændre objektets kilde ?-)
Avatar billede killifish Nybegynder
28. maj 2005 - 16:00 #2
Jeg har prøvet kun at udskifte <param> og src attributten på <embed>, men det har ingen effekt. Det kan ikke passe at man ikke kan indsætte et <object> med javascript i IE.
Avatar billede killifish Nybegynder
28. maj 2005 - 18:17 #3
Ny version uploadet. Nu virker det i IE, men ikke i Opera. I IE/Firefox kan man kontrollere Quicktime med javascript, så det bruger jeg til de to browsere. Men det virker ikke i Opera, så der skal jeg stadig fjerne object og så indsætte igen.

Men jeg ved ikke hvordan jeg kan skille de to ad. Lige nu har jeg:

    if (document.movieObject) {
        document.movieObject.SetURL(href);
        return true;
    } else {

Problemet er, at if (document.movieObject) også evaluerer til sandt i Opera. Jeg kan ikke bruge if (document.movieObject.SetURL(href)) fordi Opera så giver en javascript-fejl og nægter at køre resten af scriptet.

Den fejl Opera giver er en type mismatch.
Avatar billede olebole Juniormester
28. maj 2005 - 20:07 #4
<ole>

Du kan vel lave en funktion, der skifter objektet ud med DOM. Noget à la:

function insertMovie(path) {
  var cont = document.getElementById("movieContainer");
  while (cont.childNodes.length>0) cont.removeChild(cont.firstChild);
  var obj = document.createElement("object");
  cont.appendChild(obj);
  obj.setAttribute("id", "movieObject");
  obj.setAttribute("classid", "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B");
  var param = document.createElement("param");
  param.setAttribute("name", "src");
  param.setAttribute("value", "1.mov");
  obj.appendChild(param);
  ... osv, osv ...
}

I øvrigt er det aldrig godt at begynde et filnavn med et tal (1.mov) ... det er at sætte vand over til problemer. Lad det i stedet begynde med et bogstav eller underscore  ;o)

/mvh
</bole>
Avatar billede killifish Nybegynder
11. juni 2005 - 20:05 #5
ole, det var mit første forsøg, men det virker ikke i IE. Jeg lukker her for nu. Det kan være jeg opretter et nyt spørgsmål igen senere (når jeg får mere tid til at kæmpe med det her script).

Smid svar hvis I vil have point.
Avatar billede roenving Novice
21. juli 2005 - 19:54 #6
Måske skulle vi genopfriske, da sidate reaktion stammer fra den mail-løse periode !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester