Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wywołanie funkcji
SaMi
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 14
Dołączył: 27.03.2004
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Witam, mam mały problem i najprawdopodobniej jest to banał. Mianowicie gdy tworzę zewnetrzny plik js poprzez utworzenie tagu <script> w DOMie i wywoluję zawartą w nim funkcje uzyskuję komunikat ReferenceError: user is not defined. natomiast jeśli załaduję klasycznie w htmlu ten sam plik wszystko działa bez problemu.
  1. <script type="text/javascript">
  2. (function(d,s){
  3. var js,jsr = d.getElementsByTagName(s)[0];
  4. js = d.createElement(s);
  5. js.src = '//www.mojadomena.pl/js/iframe.js';
  6. jsr.parentNode.insertBefore(js,jsr);
  7. }(document,'script'));
  8.  
  9. user.setAccount(['12345']);

iframe.js w wielkim uproszczeniu
  1. // (function(w){ - tego tu miało tu nie być
  2. var user = user || (function(){
  3. _args = {};
  4.  
  5. return {
  6. setAccount: function(a){
  7. _args = a;
  8. },
  9. key: function(){
  10. return _args[0];
  11. }
  12. };
  13. }());


Ten post edytował SaMi 30.12.2013, 10:30:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukasz1985
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

Ostrzeżenie: (0%)
-----


Odpowiedź kryje się w tej całej ceregieli, którą wykonujesz żeby oszczędzić globalną przestrzeń nazw.
Zmienna "user" to zmienna lokalna anonimowej funkcji w iframe.js. Domyślam się, ze chciałeś przesłać do tej funkcji zmienną window (po literce "w" w argumencie) i tam przypisać ją w następujący sposób na końcu:

[JAVASCRIPT] pobierz, plaintext
  1. w.user = user
[JAVASCRIPT] pobierz, plaintext


Poza tym, po co takie kombinacje? Po co do funkcji anonimowej przesyłać zmienną document, skoro to zmienna globalna zawsze widoczna w każdym zasięgu?

Przerost formy nad treścią. Proponowałbym zacząć od importowania skryptów zwykłym znacznikiem <script> , a potem interesować się jakimis tam formami usprawniania tego procesu.

Sprawdziłbym jeszcze czy nie lepiej byłoby użyć append zamiast insertBefore. Tutaj specjalistą nie jestem jednak myślę, że problemem może być to, że skrypty są zaimportowane w złej kolejności.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 01:52