Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] Javascript in pagina met iframe werkt niet goed

Pagina: 1
Acties:

  • TheWickedD
  • Registratie: Juli 2002
  • Laatst online: 02-04-2024
Ik ben nu ik een stuk verder ben weer een probleem tegengekomen waar ik niet uit kom:
In een eerder topic heeft vooral Crisp mij geholpen met mouse-positie-tracker code en die werkt nog steeds geweldig. totdat ik een iframe in mijn pagina gebruik. Zodra de muis zich in het iframe beweegt wordt zijn positie niet meer getracked.
Een tweede probleem is hieraan gelijk. Mijn webpaginas zijn zo opgebouwd dat men met de pijltjestoetsen naar de vorige en volgende pagina kan. Voordat dit gebeurd wordt eerst de mousetrackerdata verstuurd. Helaas, als je in het iframe aan het surfen bent werkt ook deze functie niet meer. Ik heb geen controle over de inhoud van het iframe (als in, dit zijn niet mijn pagina's) - ik ontwikkel een soort van browservenster met iframe voor de daadwerkelijk weertegeven pagina en parent voor wat extra tooltjes. Puur voor de oefening (en die heb ik nodig merk ik vaak!)

Kortom, javascript die in de pagina waarin het iframe is ingebakken (de parent) draait, krijgt geen input meer zodra de muis zich in het iframe bevindt/het iframe actief is. Kan ik hier op de een of andere manier iets aan doen? Ik zie niet in welke richting ik moet zoeken.
Bedankt!

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<body onkeydown="navigate(event)">
<iframe src="http://tweakers.net" id="idiframe" name="iframe" > </iframe>
<script  type="text/javascript">
function navigate(e)
{
    var keynum = e.keyCode
    if (keynum==37)
    {
        formSubmit();
        window.location="next"
    }
}
// mousetracker
var samplefreq = 25;
var clockStart = 0; // initialize outside function for global scope
window.onload = captureTime; // event fires when all elements on page are fully loaded
function captureTime()
{
    var loaded = new Date();
    clockStart = loaded.getTime();
}
var mouseTracker = function()
{
    var x = 0, y = 0, t = 0;
    var cursorArray = [];
    function trackMouse(e)
    {
        e = e || event;
        x = e.clientX + document.body.scrollLeft;
        y = e.clientY + document.body.scrollTop;
        var myTime = new Date();
        t = myTime.getTime() - clockStart;
    }
    function storeMouse()
    {
        if (clockStart>0) // don't track before page is fully loaded (not very reliable :s)
        {
            cursorArray.push({x:x,y:y,t:t});
        }
    }
    document.onmousemove = trackMouse;
    setInterval(storeMouse, (1000/samplefreq));
    return function()
    {
        return cursorArray;
    }
}();

  • foliant
  • Registratie: Juli 2007
  • Laatst online: 19-01-2022
je kunt om te beginnen
code:
1
frames[iframe].onmousemove
gebruiken voor de onmousemove events in het iframe.

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Ook wat foliant suggereert gaat waarschijnlijk niet werken als je de inhoud van de iframe-pagina niet zelf beheert. Om precies te zijn als de inhoud van het iframe niet in hetzelfde domein staat.

Je mag namelijk niet cross-server javascripten, omdat dat het phishen erg makkelijk zou maken.

Als de inhoud van het iframe (de pagina's die je niet direct beheert) geen "moeilijke" dingen bevat zoals eigen javascript e.d. dan is het te overwegen om de zwik met ajax binnen te halen en dynamisch in een div te zetten ipv een iframe. Maar als de pagina's in een ander domein staan zou je dan al serverside de boel op moeten halen en doorsturen naar je ajax-request.

Plus dat het gewoon een hele lelijke oplossing is en een beetje misbruik van de ajax-technologie.