is het mogelijk om te weten wanneer een iframe met cross-site inhoud een ajax-verzoek heeft voltooid?

Ik heb een pagina die een iframe gebruikt die inhoud van een andere site weergeeft. Die inhoud is eigenlijk een wizard, een knop voor vooruit/achteruit, enzovoort. De inhoud wordt vernieuwd via ajax. Ik heb verschillende dingen geprobeerd om de pagina naar boven te laten bladeren wanneer de gebruiker de volgende knop heeft geraakt. Het ding dat het meest waarschijnlijk leek te werken, was om een ​​functie aan het ajaxSuccess-evenement te koppelen, zoals zo:

    $('#eyeFrame').ajaxSuccess(function() {
        alert('Triggered ajaxSuccess handler');
    });

Maar het heeft nooit geschoten. Het lijkt erop dat ik niets kan doen om met die inhoud in het iframe om te gaan of te bepalen of het iframe een ajax heeft gestart. Klopt dat of is er een manier om dit te doen dat ik niet zie?

2
@Neal dat lijkt alsof het zou werken, maar een snelle zoekopdracht doet me geloven dat de enige Net-oproepen die ik zou kunnen zien van mijn JS naar mijn domein zouden zijn. Heb je links die me alle netwerkactiviteiten van JS zouden laten zien?
toegevoegd de auteur jcollum, de bron
@Neal Ik heb deze code toegevoegd: $ ("# eyeFrame"). Bind ({ajaxStart: function() {alert ('ajaxStart');}}); maar het vuurde niet af toen ik wat ajax-dingen deed vanuit het iframe.
toegevoegd de auteur jcollum, de bron
Kijk in de javascript-console voor netwerkverbindingen.
toegevoegd de auteur Neal, de bron

1 antwoord

If the iframe location belongs to the same domain, you can use $('#eyeFrame').load(function(){/* */}); There are some drawback anyway http://api.jquery.com/load-event/

Voor een ander domein weet ik geen oplossing.

1
toegevoegd
@topek Ik heb eerder naar postMessage gekeken, ik denk dat ik controle nodig heb over de inhoud van het andere domein om er gebruik van te maken.
toegevoegd de auteur jcollum, de bron
Voor een ander domein is er geen oplossing vanwege de browserbeveiliging.
toegevoegd de auteur Kevin B, de bron
load wordt echter niet geactiveerd wanneer een ajax-aanroep vanaf de pagina in het iframe wordt gestart. Dat is niet iets waar we vanaf de bovenliggende pagina naar kunnen luisteren.
toegevoegd de auteur Kevin B, de bron
U kunt met postMessage , als de browser ondersteunt het.
toegevoegd de auteur topek, de bron
yep. dat is wat ik vergat te zeggen
toegevoegd de auteur FreeCandies, de bron