2011-09-14 3 views
2

J'ai écrit une page html qui utilise du javascript pour masquer et afficher un objet de film flash. Tout fonctionne bien jusqu'à ce que j'essaie de quitter l'onglet, et quand cela arrive, le navigateur entier se bloque avec moins d'une zone de texte d'erreur. Quelqu'un peut-il aider? Mercias3 ExternalInterface.call provoquant un plantage du navigateur

Flash Code

if(ExternalInterface.available) 
ExternalInterface.call('hideTimeline'); 

code Javascript

function showTimelineFirstPlay() 
{ 
var timeline = document.createElement('span'); 
timeline.id = "timeLineer" 
// WIDTH=1217 HEIGHT=170 

//document.write(document.getElementById('topper').offsetHeight); 
var fHeight = document.getElementById('topper').offsetHeight; 
var fWidth = document.getElementById('topper').offsetWidth - 10; 
var hHeight = fHeight + 100; 
var hWidth = fWidth - 150; 

timeline.innerHTML = "<OBJECT id='fTrans' allowScriptAccess='sameDomain' style = 'solid;border-color:#960000; border-width:3px;position:absolute; top:95; left:15;' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' WIDTH="+fWidth+" HEIGHT="+fHeight+"> <PARAM NAME=movie VALUE='FirstPlay.swf'> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#ffffff> </object><span onclick='hideTimeline()'style='color:#0098db;position:absolute; left:"+hWidth+"; top:"+hHeight+"'>- Hide Timeline</sapn>"; 

topper.appendChild(timeline); 
} 

function hideTimeline() 
{ 
topper.removeChild(document.getElementById('timeLineer')); 
} 

window.onload = function() 
{ 
showTimelineFirstPlay(); 
} 
+1

Avez-vous essayé de redémarrer? Les scripts ne devraient jamais planter un navigateur. Si c'est un code défectueux poster ce que le problème est/était –

+0

C'est juste que je ne sais pas exactement quel est le problème. Je sais que lorsque l'actionScript appelle la méthode Javascript en utilisant ExternalInterface.call, cela provoque une erreur. Lorsque vous essayez de fermer l'onglet après que cet appel a été fait, il bloque le navigateur mais ne donne aucun message d'erreur. –

+0

Il se peut que le branchement se bloque car vous appelez hideTimeline et supprimez le fichier SWF lorsque le fichier SWF attend une réponse. Essayez de démarrer une minuterie dans hideTimeline qui va topper.removeChild (document.getElementById ('timeLineer')); après environ 50 milisecondes. –

Répondre

0

Le plug-in peut être écraser parce que vous appelez hideTimeline et la suppression du fichier SWF lorsque le fichier SWF est en attente d'une réponse.
Essayez de démarrer une minuterie hideTimeline qui RemoveChild après comme 50

miliseconds.topper.removeChild(document.getElementById('timeLineer')); 
Questions connexes