[javascript] werkt niet (meer) op ie/firefox, wel op android

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 24-09 16:49
Ik heb enkele jaren geleden een script gemaakt om m'n domotica aan te sturen vanop een website (heel eenvoudig een ajax call doen). Dit werkte toen perfect op ie en firefox.
Nu merk ik echter dat sinds enige tijd het (onveranderde) script niet meer werkt op de pc, maar wel nog steeds op android (chrome webapp). Op de pc werkt het wel nog op chrome...

Gelijkaardige scripts waar ook ajax calls worden gedaan werken wel nog steeds?
Heeft er iemand een idee wat er niet meer zou werken?
de code is: (ter info: die dpt2 is om aan de hand van de filenaam van het icoontje te weten of de dimmer aan of af stond)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function swapDmr(dpt,str){
/////////////////////////////////////////////////////
// functie om de dimmer aan of af te zetten       //
////////////////////////////////////////////////////
// divides the path
dpt=document.getElementById(dpt);
dpt2=dpt.src.split('/');
// gets the last part of path, ie name
dpt2 = dpt2[dpt2.length-1];
dpt2 = dpt2.slice(dpt2.length-8,dpt2.length-5);
var i = document.createElement('iframe'); 
    i.style.display = 'none'; 
    i.onload = function() { i.parentNode.removeChild(i); }; 
    i.src = adres+'nbs'+str+'.ax2'; 
    document.body.appendChild(i);
if(dpt2=='000'){
    sleep(700);
    window.location.reload(true);
    //setTimeout(window.location.reload(true),700);
    }
else{dpt.setAttribute('src','licht_000b.png');}
}

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat heb je zelf al gezocht/geprobeerd/gevonden (per onze Quickstart)? Heb je al eens in je webdev tools gekeken naar evt. foutmeldingen? (Firefox Firebug of Dev.tools / IE F12 Dev.tools / Chrome Dev.tools / Safari Dev.tools / Opera Dragonfly)? Überhaupt al gedebugged? (Debuggen: Hoe doe ik dat?)

Je zou op z'n minst kunnen aangeven wat er niet werkt; "werkt niet" is géén beschrijving van je probleem.

*edit*
En ik dacht al dat ik een déjà vu had ;)
RobIII in "[PHP Myqsl] zeer trage verwerking"

[ Voor 20% gewijzigd door RobIII op 21-09-2014 21:05 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • vpm
  • Registratie: December 2010
  • Laatst online: 23-09 18:31

vpm

Think, tinker, tank

Wellicht heb je niet alle code gepost, maar hier ontbreken enkele vars (e.g. adres, ax2).
Ook ontgaat mij de logica van i.parentNode.removeChild(i). Waarom creëer je hem dan?

[ Voor 35% gewijzigd door vpm op 22-09-2014 17:02 ]


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
vpm schreef op maandag 22 september 2014 @ 17:01:
Wellicht heb je niet alle code gepost, maar hier ontbreken enkele vars (e.g. adres, ax2).
Ook ontgaat mij de logica van i.parentNode.removeChild(i). Waarom creëer je hem dan?
Dat iframe wordt zo te zien enkel misbruikt om een asynchrone request te doen. Het mag geen AJAX heten.

Het hele werk is waarschijnlijk ook, keihard maar wel heel eerlijk, een hopeloos geval waarbij je beter de grote rode knop kunt indrukken en opnieuw kun beginnen, dan te pogen het allemaal te gaan refactoren en weer recht te trekken.

[ Voor 12% gewijzigd door R4gnax op 22-09-2014 20:02 ]


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 24-09 16:49
Het geheel is inderdaad wat "gegroeid" enkele jaren geleden met een combinatie uit javascript en php. Toen leek me die methode met het iframe een eenvoudige oplossing, maar ik vermoed dat het is zoals R4gnax zegt, eigenlijk beter om eens terug van nul te beginnen nu ik het hobbyprojectje terug vanonder het stof haal...
Zoals RobIII aangaf had ik reeds geprobeerd de firefox en ie debug te interpreteren, maar voorlopig zonder resultaat (nog wat ervaring opdoen)
Voor zover ik nu kan vinden zit het 'probleem' bij de laatste if: als sleep(700); en window.location.reload(true); wordt uitgevoerd gaat het mis.
Sleep(ms) omvat
code:
1
2
3
4
5
6
function sleep(ms)
    {
        var dt = new Date();
        dt.setTime(dt.getTime() + ms);
        while (new Date().getTime() < dt.getTime());
    }


Maar het is misschien het moment om de code van nul terug te starten en de php zaken eruit te halen, zodat een page refresh niet steeds nodig is voor alles en nogwat.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Voor zover ik nu kan vinden zit het 'probleem' bij de laatste if: als sleep(700); en window.location.reload(true); wordt uitgevoerd gaat het mis.
Sleep(ms) omvat
code:
1
2
3
4
5
6
function sleep(ms)
    {
        var dt = new Date();
        dt.setTime(dt.getTime() + ms);
        while (new Date().getTime() < dt.getTime());
    }
Je weet hopelijk dat dit stukje code je complete browser hard bevriest voor het opgegeven aantal milliseconden, heh? Het concept van een thread sleep die terug yield aan de browser bestaat in JS niet.

Je zult met callbacks aan de slag moeten. En als je dat enigzins beheersbaar wilt houden, dan kan ik je adviseren om eens te gaan googlen naar promises.

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 11:35
Mijn tip zou zijn om geen afkortingen als variabelnamen of functienamen te gebruiken. dpt? str? nbs? dpt2? dmr? Kenmerk van een goede programmeur is dat anderen (zoals wij in dit geval) in één oogopslag kunnen zien wat een stukje code doet.

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • vpm
  • Registratie: December 2010
  • Laatst online: 23-09 18:31

vpm

Think, tinker, tank

Ramon schreef op maandag 22 september 2014 @ 21:59:
Mijn tip zou zijn om geen afkortingen als variabelnamen of functienamen te gebruiken. dpt? str? nbs? dpt2? dmr? Kenmerk van een goede programmeur is dat anderen (zoals wij in dit geval) in één oogopslag kunnen zien wat een stukje code doet.
Ik denk dat veel (zo niet alle) programmeurs afkortingen gebruiken -het zou eruit zien-, maar een afkorting moet wel duiden op de betekenis. Dat doet het in dit geval duidelijk niet.
Pagina: 1