2012-10-27 7 views
43

Mam ten kod, a ten błąd w Firebug:Wymień URL z youtube osadzić kod - błąd: Odmowa uprawnień do dostępu do własności „toString”

Error: Permission denied to access property 'toString'

Jak można naprawić ten błąd?

HTML:

<div class="yturl">http://www.youtube.com/watch?v=UNMLEZrukRU</div> 

JS:

$("div.yturl").each(function(){ 
    var regex = /(\?v=|\&v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/; 
    var youtubeurl = $(this).text(); 
    var regexyoutubeurl = youtubeurl.match(regex); 
    if (regexyoutubeurl) 
    { 
     $(this).html("<iframe width=\"390\" height=\"315\" src=\"http://www.youtube.com/embed/"+regexyoutubeurl[2]+"\" frameborder=\"0\" allowfullscreen></iframe>"); 
    } 
}); 

DEMO:http://jsfiddle.net/9e48p/

+0

Z jakich wersji Firefoksa i Firebuga korzystasz? –

+0

FireBug 1.10.5., FF 16.0.2 – JohnMalcom

+1

Kiedy otwieram plik demonstracyjny w Chrome, konsola JS w przeglądarce Chrome wyświetla również komunikat o błędzie: "Niebezpieczna próba JavaScript do uzyskania dostępu do ramki z adresem URL http://jsfiddle.net/ 9e48p/z ramki z adresem URL http://www.youtube.com/embed/UNMLEZrukRU Domeny, protokoły i porty muszą się zgadzać. " –

Odpowiedz

67

Błąd może zostać naprawiony przez zespół Adobe Flash Player lub przez inżynierów Google - na razie powinieneś go zignorować. Jest połączony z ustawieniami bezpieczeństwa Flash Playera i plikiem SWF osadzonym na stronie Youtube. Problem był następujący: reported in the past by IBM, a także jest Mozilla Bugzilla entry.

Po wyłączeniu Flash Playera w przeglądarce Firefox 16.0.2, komunikat o błędzie zniknie. Sprawdź Komentarz # 37: https://bugzilla.mozilla.org/show_bug.cgi?id=434522#c37

For what it's worth, I'm seeing this bug happen when any flash file, even ones that have NO actionscript calls (ExternalInterface, etc) in them at all, is loaded into an iframe on a page where the page domain and the iframe domain are different. This means that the iframe problem is caused when there is in fact a cross-domain situation in place. However, it's not totally clear if there's really actually attempting to be a cross-domain call that should be prevented and error'd out.

Because it's nothing that the flash SWF itself is trying to call to do "Location.toString", and it's nothing about the javascript on the page doing it, the only choice is that there's something about the flash plugin itself (9.0.124 is what I'm testing with) that's trying to make that call up to the parent/top window to do Location.toString().

Podczas gdy błąd jest oznaczony jako rozwiązany, przypadek testowy dołączony https://bug434522.bugzilla.mozilla.org/attachment.cgi?id=321956 produkuje ten sam komunikat o błędzie w najnowszej wersji Firefoksa (zarówno w konsoli Firebug lub okna Firefox Error Console) .

Aktualizacja:
Błąd został złożony z Adobe, a także w starej bazy danych bug: FP-561 "Location.toString" uncaught (security) exception caused by improper Flash plugin behavior (trzeba konto aby zobaczyć szczegóły bug). Ostatni komentarz, gdy błąd został zamknięty:

Tested with the latest Flash Player 10.3.181.34 on Firefox 4 and 5, no such exception was thrown. So the bug may have been fixed, right? If you still meet this issue, please file a bug in our new bug system https://bugbase.adobe.com/ and put a link in the new bug to this original JIRA report. We are happy to follow up your report in the new bug system.

+5

To by wyjaśniało, dlaczego nie wyświetla się numer linii dla błędu JavaScript, jeśli Flash Player jest przyczyną problemu. –

+1

Daty w bugzilli są naprawdę mylące. Został zgłoszony w 2008 r. I ostatnio zmodyfikowany w 2009 r. Status błędu został rozwiązany i przez jakiś czas nie ma komentarza pod tym błędem. – Foreever

+2

Bilet BugZilla został ponownie otwarty pod dwoma nowymi biletami: [# 385676] (https://bugzilla.mozilla.org/show_bug.cgi?id=385676) i [# 1015700] (https://bugzilla.mozilla.org /show_bug.cgi?id=1015700) Każdy, kto patrzy na stary link biletu, zobaczy, że jest zamknięty/"naprawiony", ale przewiń w dół do komentarzy, aby uzyskać więcej informacji na jego temat. – Sean

1

że problem może być spowodowany rozszerzeniem, które nie działa prawidłowo.

Uruchom Firefoksa w Rozwiązywanie problemów z Firefoksem za pomocą trybu awaryjnego w celu sprawdzenia, czy jedno z rozszerzeń lub jeśli przyspieszanie sprzętowe powoduje problem (przejdź do motywu DEFAULT: Firefox/Narzędzia> Dodatki> Wygląd/motywy).

2

Prawdopodobnie wystąpił błąd w konstruktorze adresów URL elementu iframe. Błąd jest zgłaszany w skrypcie youtube, który ładuje się w elemencie iframe. Ten sam błąd zostanie rzucony z harcoded iframe HTML, który nie jest dynamicznie z dodatkiem skrypcie

<iframe width="390" height="315" src="http://www.youtube.com/embed/UNMLEZrukRU" frameborder="0" allowfullscreen></iframe> 

wersję HTML tylko demo http://jsfiddle.net/Lgt5f/

Dokładnie sprawdź adres URL nie brakuje parametru, inaczej bym sprawdzić Zasoby pomocy youtube

0

Zignoruj ​​ten błąd, nie jest on związany z kodem. Tylko błąd przeglądarki.

+1

Er, nie, to nie jest tylko błąd przeglądarki. – ggdx

48

Nie ignoruj ​​tego błędu tylko dlatego, że nie jest bezpośrednio powiązany z Twoim kodem.

Wydaje się, że występuje, gdy twoje osadzenie jest początkowo ukryte.

Wystarczy dodać ?html5=1 do adresu URL do umieszczenia na stronie. IE8 nadal będzie pobierało wersję flash. lub załaduj wideo za pomocą apki YouTube.

+0

To naprawiło mój problem. Dzięki – DreamWave

+1

Pan są prawidłowe. Dzięki za pomoc. –

+1

Znakomity. Wtf był wszystkim inżynierem Adobe i Reported by IBM BS opublikował w "zaakceptowanej" odpowiedzi powyżej? – ggdx

Powiązane problemy