Avatar billede whatever Nybegynder
16. marts 2002 - 16:28 Der er 4 kommentarer og
1 løsning

Problemer med javascript

Hej

Jeg er ved at lave et site. Dette site åbnes i et cromeless-vindue. Da sites åbnes i et nye vindue, har vi valgt at lave vores egen "browser" i vinduet.

Browseren kan ses på: www.efusion.it/browser

Jeg har nu to problemer:

1. Når man indtaster en url i feltet "Enter your url here...", og trykker enter åbnes url fint i den anden frame. Men url'en forsvinder fra text-feltet, hvordan får jeg den til at blive?

2. Når jeg trykker på reload-knappen, får jeg i IE6 følgende fejl: Line 85, Permission denied. Men i netscape får jeg ikke fejlen. Hvad kan det skyldes?

Selve koden til framen med knapperne kommer her:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<head>
<title>Mini browser</title>
<link rel="stylesheet" href="browser.css" type="text/css">
<script type="text/javascript">
<!--
  var da = (document.all) ? 1 : 0;
  var pr = (window.print) ? 1 : 0;
  var mac = (navigator.userAgent.indexOf("Mac") != -1);

  function printFrame(frame) {
    if (pr && da) { // IE5
      frame.focus();
      window.print();
    } else if (pr) { // NS4
      frame.print();
    } else if (da && !mac) { // IE4 (Windows)
      frame.focus();
      setTimeout("vbPrintPage();", 100);
    } else { // other browsers
      alert("Your browser does not support this function!!");
    }
  }

  function go()
  {   
    url = document.browser.url.value;   
   
    if (url.indexOf("http://") != -1)
    {

      parent.browserMain.location.href = url;
    }
    else
    {

      parent.browserMain.location.href = 'http://' + url;
    }
  }

  function search()
  {
    parent.browserMain.location.href = 'http://www.google.com';
    document.browser.url.value = 'www.google.com';
  }

  function home()
  {
    parent.browserMain.location.href = 'browser_main.html';
    document.browser.url.value = "Enter your url here...";
  }

  function key_enter(e)
  {
    if(document.layers)
    {
      if(e.which==13 || e.which==43) go();
    }
    else
    {
      e=window.event;
      if(e.keyCode==13 || e.keyCode==43) go();
    }
  }
   
  function init(){
    document.browser.url.onkeypress=key_enter;
  }
//-->
</script>
</head>

<body style="background-color: #EEEEEE" onload="init();">
<form name="browser">
<table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td width="60" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="history.back()" onfocus="blur()" class="inputB">Back</button>
    </td>
    <td width="80" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="history.forward()" onfocus="blur()" class="inputB">Forward</button>
    </td>
    <td width="80" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="parent.browserMain.location.reload();" onfocus="blur()" class="inputB">Reload</button>
    </td>
    <td width="60" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="home();" onfocus="blur()" class="inputB">Home</button>
    </td>
    <td width="70" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="search();" onfocus="blur()" class="inputB">Search</button>
    </td>
    <td width="60" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="printFrame(parent.browserMain)" onfocus="blur()" class="inputB">Print</button>
    </td>
    <td width="90" height="40" style="text-align: center; vertical-align: middle">
      <button type="button" onclick="" onfocus="blur()" class="inputB">Favorites</button>
    </td>
    <td width="210" height="40" style="text-align: right; vertical-align: middle">
      <input type="text" name="url" onfocus="if(this.value=='Enter your url here...')this.value='';" value="Enter your url here..." onblur="if(this.value=='')this.value='Enter your url here...';" size="30" maxlength="50" style="width: 150pt" class="inputF" />
    </td>
    <td width="25" height="40" style="text-align: left; vertical-align: middle">
      <button type="button" onclick="go()" onfocus="blur()" class="inputB">Go</button>
    </td>
  </tr>
</table>
</form>
</body>
</html>
Avatar billede olebole Juniormester
16. marts 2002 - 18:13 #1
<ole>
Ved tryk på 'Return' i text-feltet submittes formen:
  <form name="browser" onsubmit="return false;">
does the trick  ;o)

Med linien:
  parent.browserMain.location.reload();
dykker du for dybt ind i frame'en til, det kan tillades af JavaScript (mener IE6). Prøv noget:
  parent.frames["browserMain"].src = parent.frames["browserMain"].src;
eller noget i den stil. Sætter du source'en vil det ikke opfattes som X-Domain scripting. Det vil det, hvis du roder med location  ;o)
/mvh
</bole>
Avatar billede whatever Nybegynder
16. marts 2002 - 18:29 #2
olebole >

Problem 1 er løst ved at indsætte din løsning.

Hvis jeg bruger denne parent.frames["browserMain"].src = parent.frames["browserMain"].src; til den andet problem, får jeg også en permission denied. Hvordan løser jeg det?
Avatar billede olebole Juniormester
16. marts 2002 - 18:55 #3
IE6 har temmelig høj JavaScript sikkerhed fra fødselen. Virker det, jeg viste dig ikke kan du ikke bruge din bruser i IE6 - med mindre brugeren skal ændre sine browser indstillinger og så falder projektet jo lidt til jorden.
Eneste løsning er drop 'Reload' funktionen ..... c'est la vie  ;o)
/mvh
Avatar billede whatever Nybegynder
16. marts 2002 - 19:04 #4
Ok - så dropper jeg nok den funktion. Men tak for hjælpen.
Avatar billede olebole Juniormester
16. marts 2002 - 19:49 #5
anytime  ;o))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester