Problem po wywołaniu funkcji

0

Witam.
Porobiłem zmienne globalne które mają wskazywać na elementy html, ale po uruchomieni raz funkcji (zwykły alert chociażby) obiekty przestają być rozpoznawalne.
np.

    //dawałem przed definicję , dawałem po itp
    mySettings.switchView = function(){alert();};  //dawałem też eval("alert();");
    mySettings = document.getElementById("panel_settings");
    
                                                      addStyle(mySettings, "#app_settings", tmp_app_settings , window.top);  
                                                      mySettings.myStyle.write();

...

// mogę to klawiszem uruchomić milion razy - ale jak dam mySettings.switchView() - momentalnie tracę obiekt, żadne klawisze
// nie działają 0 wszystko po
  function setStyleOfElement(k){
                                  if(k=='!'){eval("window.top.hardDrive.myStyle.showSettingsWindow();");}
                                  if(k=='@'){controlPanel.myStyle.showSettingsWindow();}
                                  if(k=='#'){srcEditor.myStyle.showSettingsWindow();}
                                  if(k=='$'){consoleOut.myStyle.showSettingsWindow();}
                                  if(k=='%'){settingsPanel.myStyle.showSettingsWindow();}
                                  if(k=='^'){controlPanelContainer.myStyle.showSettingsWindow();}                                 
                                  if(k=='&'){window.top.mySettings.myStyle.showSettingsWindow();}                                 
                                  if(k=='*'){HardDriveContentPanel.myStyle.showSettingsWindow();}
                                  if(k=='('){HardDriveControlPanel.myStyle.showSettingsWindow();}
                                  if(k==')'){window.top.body.myStyle.showSettingsWindow();}}
2

Rozwiązanie problemu masz w 3 linijce

johnny_Be_good napisał(a):
    //dawałem przed definicję , dawałem po itp
    mySettings.switchView = function(){alert();};  //dawałem też eval("alert();");
    mySettings = document.getElementById("panel_settings");

Dodajesz do zmiennej mySettings metodę switchView, ale później przez zmianę wartości mySettigs = ... jest to skasowane.

0

Dodawałem też po

0
Xarviel napisał(a):

Rozwiązanie problemu masz w 3 linijce

johnny_Be_good napisał(a):
    //dawałem przed definicję , dawałem po itp
    mySettings.switchView = function(){alert();};  //dawałem też eval("alert();");
    mySettings = document.getElementById("panel_settings");

Dodajesz do zmiennej mySettings metodę switchView, ale później przez zmianę wartości mySettigs = ... jest to skasowane.

Mogę 1000 razy to uruchomić ale jak raz odpalę
mySettings.switchView = function(){ alert();}- to przestaje reagować na klawisze

Wywołanie funkcji obiektu , modyfikuje stan całej aplikacji.

Co ciekawe - jak okienko białe jest otworzone, tu kliknięcie na "Ustawienia" nie blokuje ponownych wyświetlen tego białego okna.

1.jpg

Rozwiązanie - body traci focus.

1

Rozwiązanie:

controlPanel.contentWindow.document.addEventListener('keypress', function(event) {

if(event.shiftKey){
                   let h = event.key;
                   window.top.setStyleOfElement(h);}

});

1 użytkowników online, w tym zalogowanych: 0, gości: 1