Toon posts:

[js] link in frame openen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Kben onlang bezig geweest met het innerhtml commando en regexen, maar blijkbaar moet er toch nog ergens een klein foutje in zitten...

Dit is de bedoeling: Je vult een zoekwoord in, en je doorzoekt de site (van het onderste frame)
de bedoeling zie je hier: LINK

de 2 gebruikte bestanden hiervoor zijn
http://users.pandora.be/benedikt/site3/index.html
& http://users.pandora.be/benedikt/site3/bovenframe.html

de code van het bovenframe is:

code:
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
<html>
<body>

<script language="Javascript">

var frm = frames[benedenframe];
var cl = null;
var cb = null;

function loadFile(url,callback)
     {
     if (document.body)
          {
          frm.document.body.innerHTML = "";
          frm.location = url;
          cl = setInterval("checkLoaded()",1);
          cb = callback;
          }
     }

function checkLoaded()
     {
     if (frm.document.body.innerHTML.indexOf("</") > -1)
          {
          cb(frm.document.body.innerHTML);
          clearInterval(cl);
          }
     }

function gaNaarSite(text)
     {
     parent.benedenframe.location=text
     }

</script>
<FORM>
<input type="text" name="zoekwoord" value="typ hier je zoekwoord">
<INPUT type="button" value="Ga naar zoekwoord" onClick="loadFile(zoekwoord,gaNaarSite)">
</FORM>
</BODY>
</html>


PS: ik weet het, ik ben een (javascript)programmeer newbie

[ Voor 43% gewijzigd door Pelle op 27-01-2005 09:23 . Reden: code tags ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

<a href="hierjeurl.html" target="naamvanframe">Link</a>

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Wat wil je nou precies en wat moet het script doen? Ik snap er niets van.

Verwijderd

Topicstarter
De bedoeling is als je naar mijn pagina gaat (doe maar als voorbeeld)

en als je dan bijvoobeeld het zoekwoord "vacatures" intypt en dan op "ga naar zoekwoord" klikt, dat je naar deze link gaat:
http://www.google.be/intl/nl/jobs/ (want er staat het woord "vacatures" in de "link-tekst")


P.S: het stukje broncode kwam oorspronkelijk van deze pagina.

[ Voor 37% gewijzigd door Verwijderd op 27-01-2005 08:14 ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Dus je wilt als je op 'ga een zoekwoord' klikt moet in het onderste frame het resultaat geladen worden van de zoekopdracht bij Google? Of moet hij ergens anders naartoe gaan, want dat met die verwijzing naar Google Jobs is mij niet geheel duidelijk...

Verwijderd

Topicstarter
neen, als je op "ga naar zoekwoord klik" (en je heb iets ingevuld in het zoekvenster) dan ga je naar een url op de pagina van het onderste frame, die dat woord bevat (van in het zoekvenster)

bijvoorbeeld: je surft met het onderste frame naar www.tweakers.net
je typt in het bovenste frame "longhorn" in en drukt op ga naar link

dan moet het onderste frame naar nieuws: Microsoft gaat Longhorn-plannen bespreken met DoJ gaan. (want kijk maar eens op tweakers.net headline van vandaag (donderdag) 0:02 uur)

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Dus je wilt alle links doorlopen en als daar een match in voorkomt, dan moet die link gevolgd worden. Volgens mij moet je dan wat met onderstaande code doen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function loadURL(zoekwoord) {

var anchorTags =  document.getElementsByTagName("a");

    for (var teller = 0; teller < anchorTags.length ; teller++) {

        if (anchorTags[teller].innerText == zoekwoord) {
            alert("Href of this a element is : " + anchorTags[teller].href + "\n");
        }
    } 
}

[ Voor 10% gewijzigd door Woudloper op 27-01-2005 08:57 ]


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 15-05 19:36

Pelle

🚴‍♂️

Ik vraag me af of dat gaat werken, omdat t.net op een heel ander domein draait en je in principe met JS geen toegang zou moeten hebben tot die website...

Een vergelijking op innerText zou ik niet gebruiken overigens, maar met de test-method kijken of de zoekstring voorkomt (nu zoek je nl. op een exacte match):

Java:
1
2
3
4
regex = new RegExp(zoekwoord);
if (regex.test(anchorTags.item(teller).innerText)) {
    // bla 
}

Verwijderd

Topicstarter
Kgeraak aan beide nog niet uit,
maar eerst nog wat studeren voor m'n examen deze namiddag.

Vanavond probeer ik verder :)

Verwijderd

Topicstarter
  1. <html>
  2. <body>
  3. <script language="Javascript">
  4. function loadURL(zoekwoord) {
  5. var anchorTags = parent.benedenframe.document.getElementsByTagName("a");
  6. for (var teller = 0; teller < anchorTags.length ; teller++) {
  7. regex = new RegExp(zoekwoord);
  8. if (regex.test(anchorTags.item(teller).innerText)) {
  9. alert("Href of this a element is : " + anchorTags[teller].href + "\n");
  10. }
  11. }
  12. }
  13. </script>
  14. <FORM>
  15. <input type="text" name="zoekwoord" value="typ hier je zoekwoord">
  16. <INPUT type="button" value="Ga naar zoekwoord" onClick="loadURL(zoekwoord)">
  17. </FORM>
  18. </BODY>
  19. </html>
We geraken er maar er moet ergens nog iets wringen...
(het parent.benedenframe gedeelte?)

[ Voor 31% gewijzigd door Verwijderd op 27-01-2005 10:58 ]


Verwijderd

Topicstarter
ik probeer het met iframes nu (maar werkt nog steeds niet)


PHP:
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
<html>
<body>

<script language="Javascript">

function loadURL(zoekwoord) {

hetObject =  document.getElementById('testiframe');
var anchorTags =   hetObject.getElementsByTagName("a");

    for (var teller = 0; teller < anchorTags.length ; teller++) {

        regex = new RegExp("zoekwoord");
    if (regex.test(anchorTags.item(teller).innerText)) {
            alert("Href of this a element is : " + anchorTags[teller].href + "\n"); 
    }
    else {
        alert("mislukt");
    }
    } 
}

</script>

<FORM>
<INPUT type="text" name="zoekwoord" value="Vul hier je zoekwoord in">
<INPUT type="button" value="Ga naar url zoekwoord" onClick="loadURL()">
</FORM>

<iframe id="ifrm" name="benedenframe" src="http://www.google.be" scrolling="yes" 
 width="800" height="600" id="testiframe" frameborder="0">
</iframe>

</BODY>
</html>

[ Voor 42% gewijzigd door Verwijderd op 29-01-2005 16:36 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:24

crisp

Devver

Pixelated

Je kan geen documenten benaderen die niet in je eigen domein vallen (sandbox security).

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Dit is de code die 100% werkt en die je zoekt. De regexp is vervangen door indexOf waardoor hij ook bij gedeeltelijke matches werkt. Alleen is cross domain scripting verboden dus je zult nooit andere domeinen (zoals google.be) kunnen uitlezen. Gebruik je ipv google.be een lokale testpagina dan zul je zien dat het werkt.

HTML:
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
<html>
  <head>
    <title>Test</title>
    <script type="text/javascript">
      function loadURL(zoekwoord)
      {
        var anchorTags = document.getElementById("benedenframe").contentWindow.document.body.getElementsByTagName("a");

        for (var teller = 0; teller < anchorTags.length ; teller++)
        {
          if (anchorTags.item(teller).innerHTML.indexOf(document.getElementById("zoekform").elements["zoekwoord"].value) > -1)
          {
            alert("Href of this a element is : " + anchorTags[teller].href + "\n");
          }
          else
          {
            alert("mislukt");
          }
        }
      }
    </script>
  </head>
  <body>

    <form id="zoekform">
      <input type="text" name="zoekwoord" value="Vul hier je zoekwoord in" />
      <input type="button" value="Ga naar url zoekwoord" onclick="loadURL()" />
    </form>

    <iframe id="benedenframe" src="http://www.google.be" scrolling="yes" width="800" height="400" frameborder="1"></iframe>

  </body>
</html>

Verwijderd

Topicstarter
bedankt voor het vele werk
het werkt idd.

maar die sandbox security, dat is toch gewoon client-related?

[ Voor 80% gewijzigd door Verwijderd op 29-01-2005 17:25 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Je hebt mijn voorbeeld ook niet correct overgenomen :/

/edit:
nu wel dus :)

Die sandbox security word idd client side gedaan door de browser ;) Dus daar kun je niet omheen.

[ Voor 54% gewijzigd door André op 29-01-2005 17:28 ]


Verwijderd

Topicstarter
Zouden er dan geen browsers bestaan die wél javascript ondersteunen, maar niet die domain check doen?
(enkel voor mezelf te gebruiken om externe pagina's te doorzoeken)

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Verwijderd schreef op zaterdag 29 januari 2005 @ 17:42:
Zouden er dan geen browsers bestaan die wél javascript ondersteunen, maar niet die domain check doen?
(enkel voor mezelf te gebruiken om externe pagina's te doorzoeken)
Gelukkig niet, elke zichzelf respecterende browser heeft die beveiliging. Wat je wel kunt doen is de pagina fetchen met een serverside taal zoals asp/php en hem dan analyseren :)

Verwijderd

Topicstarter
khad ged8 aan

Runtime.getRuntime().exec("wget -O c:\hetiframe.html http://www.site.com/start.php")

maar zal voor morgen zijn (examen)

Verwijderd

Topicstarter
/edit: mag gesloten worden, ik open een andere topic (dan moet er niet zoveel gelezen worden ;))

[ Voor 188% gewijzigd door Verwijderd op 06-02-2005 13:34 ]

Pagina: 1