2010-11-06 4 views
0

Sur un site Web, http://imgthis.com/blog/?p=34, j'ai deux JavaScripts qui se chargent dans un iframe avec une galerie d'images, l'un est lytebox qui est un clone allégé de Light Box 2 pour les pop-ups de galerie d'images et l'autre est un spectacle seulement un div dans une pile de divs. Les travaux script lytebox jusqu'à ce que le spectacle seul est invoqué, à partir de ce moment-là, il est cassé dans IE FF et Opera (Chrome et Safari ne jettent pas une erreur) avec cette erreur:Résoudre un conflit JavaScript

 
Uncaught exception: TypeError: Cannot convert 'window.parent.frames[window.name]' to object Error thrown at line 223, column 1 in (imageLink, doSlide, doFrame) in [url to script]: 
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a'); 
called from line 204, column 56 in() in [url to script]: 
    myLytebox.start(this, false, false); 

Après pauses, vous devez rechargez la page pour que tout fonctionne à nouveau. Je suppose que c'est un conflit, car il ne se produit que lorsque l'autre script a été appelé. Avant le spectacle, un seul est invoqué, cela fonctionne parfaitement.

C'est le spectacle qu'un seul code qui est intégré dans la page:

function showonlyone(thechosenone) { 
    var newboxes = document.getElementsByTagName('div'); 
     for(var x=0; x<newboxes.length; x++) { 
       name = newboxes[x].getAttribute('name'); 
       if (name == 'newboxes') { 
        if (newboxes[x].id == thechosenone) { 
        newboxes[x].style.display = 'block'; 
       } 
       else { 
        newboxes[x].style.display = 'none'; 
       } 
     } 
} 
} 

Je suis perdu à la façon dont ils pourraient être contradictoires car ils sont à la recherche d'éléments différents, bien que mon JavaScript ISN » Tellement fort que peut-être cela fait toute la différence dans le monde.

+0

En FF via Firebug l'exact erreur étant levée est "window.parent.frames [window.name] est indéfini", pas sûr si cela se rétrécit ou non. –

+0

En ce moment je l'ai changé de "window.parent.frames [window.name]" en "window.parent.frames ['imgthis']" qui semble fonctionner avec tout. Bien que je voudrais toujours savoir pourquoi le premier ne fonctionne pas. –

Répondre

1

ligne 223 de trouver lytebox.js et apporter les modifications suivantes:

var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');

à ceci:

var anchors = (this.isFrame && window.parent.frames[window.name].document) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');

0

Mon lytebox.js avait 2 occurrences

Suggestion: Trouvez (this.isFrame) ? et le remplacer par (this.isFrame && window.parent.frames[window.name].document) ?

Questions connexes