Avatar billede thulstrup Nybegynder
17. juli 2003 - 11:27 Der er 4 kommentarer og
2 løsninger

Query strenge til adressefeltet uden reload

Jeg håber det er den rigtige katagori jeg får postet det her i.

Det drejer sig om siden http://www.teknision.com/siteVersions/tek2/

Siden består af et frameset med en stor frame med selve flashsiden og en lille frame med en lille flashfil der gør det muligt at bruge frem/tilbage knapperne i browseren.

Det jeg gerne vil finde ud af er hvordan de sender forskellige query strenge til browseren adressefelt UDEN at skulle reloade den store frame (den lille frame reloader).

Det sker når man trykker på en knap i flash'en, så loader den f.eks. siden http://www.teknision.com/siteVersions/tek2/backEngine.html?file=Careers

Jeg har kigget lidt på deres kode, men jeg kan ikke gennemskue det.


frameset:
----------------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>

<frameset rows="*,1" framespacing="0" frameborder="no" border="0">
  <frame noresize src="index2.cfm?" name="main" id="main" />
  <frame noresize src="backEngine.html" name="back" frameborder="no" scrolling="no" marginwidth="0" marginheight="0" id="back" />
</frameset>
<noframes><body>
</body></noframes>
</html>
----------------------------------------------------------


index2.cfm:
----------------------------------------------------------
<html>
<HEAD>
<script language="JavaScript" type="text/JavaScript">
<!--
//BOOKMARKING//////////////////////////////////////////

//DETECTS IE6 AND ALLOWS FLASH BOOKMARK SYSTEM
function allowBookmarks(){
    var isIE6=navigator.appVersion.indexOf("MSIE 6.0");
    if(isIE6==-1){
        var bookmark=false;
    }else{
        var bookmark=true;
    }
    return(bookmark);
}

//SETS HASH FOR BOOKMARKING
function setMainUrl(val){
    top.location.hash=val;
   
}

//RETURNS HASH FROM URL
function getHash(){
    var hs=top.location.hash;
    if(hs!=""){
        var val=hs.split("#")[1];
        var str='&hash='+val;
    }else{
        var str="";
    }
    return(str);
}
/////////////////////////////////////////////////////




//INIT CONTENT//////////////////////////////////////////

//GENERATES QUERY STRING FOR FLASH OBJECT
function writeQuery(){
    var hs=getHash();
    var str='activateBack=true&bookmarks='+allowBookmarks()+hs;
    return(str);
   
}

//WRITES BODY CONTENT
function writeBody(){
    var query=writeQuery();
   
    var str='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="100%" height="1500" id="main-interface" align=""><param name=movie value="main-interface.swf?'+query+'"><param name=quality value=high><param name=flashVars value="'+query+'"><param name=bgcolor value=#FFFFFF><embed src="main-interface.swf?'+query+'" quality=high bgcolor=#FFFFFF  width="100%" height="1500" name="main-interface" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashVars="'+query+'"></embed> </object>'
   
    return(str);
   
}
/////////////////////////////////////////////////////





//FLASH-BROWSER INTEGRATION//////////////////////////

function writeStatus(msg){
    top.status=msg;   
}

function writeDefaultStatus(msg){
    top.defaultStatus=msg;   
}

function openWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}



/////////////////////////////////////////////////////


//-->
</script>


</HEAD>
<BODY bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<a name="top"></a>

<script>
document.write(writeBody());

</script>
</BODY>
</HTML>
----------------------------------------------------------


BackEngine.html:
----------------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript" type="text/JavaScript">
<!--

function checkFrames(){
    if(location.href==top.location.href){
        var filename=queryString("file");
        top.location.href="http://www.teknision.com/?section="+filename;
    }   
}


function PageQuery(q) {
    if(q.length > 1) this.q = q.substring(1, q.length);
    else this.q = null;
    this.keyValuePairs = new Array();
    if(q) {
        for(var i=0; i < this.q.split("&").length; i++) {
        this.keyValuePairs[i] = this.q.split("&")[i];
    }
}

   
this.getKeyValuePairs = function() {
    return this.keyValuePairs;
}


this.getValue = function(s) {
    for(var j=0; j < this.keyValuePairs.length; j++) {
        if(this.keyValuePairs[j].split("=")[0] == s)
        return this.keyValuePairs[j].split("=")[1];
    }
    return false;
}


this.getParameters = function() {
    var a = new Array(this.getLength());
    for(var j=0; j < this.keyValuePairs.length; j++) {
        a[j] = this.keyValuePairs[j].split("=")[0];
    }
    return a;
}


this.getLength = function() {
    return this.keyValuePairs.length; }
}


function queryString(key){
    var page = new PageQuery(window.location.search);
    return unescape(page.getValue(key));
}


function displayItem(){
    var filename=queryString("file");
    if(filename!="false"){
        var strdoc="";
        strdoc+='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100" height="18">';
        strdoc+='<param name="movie" value="backbutton.swf?file='+filename+'">';
        strdoc+='<param name=quality value=high />';
        strdoc+='<param name=flashVars value="file='+filename+'" />';
        strdoc+='<embed src="backbutton.swf?file='+filename+'"quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100" height="18" flashVars="file='+filename+'"></embed></object>';
        document.write(strdoc);
    }
}
//-->
</script>
</head>
<body onload="checkFrames()">

<script language="JavaScript">
<!--
displayItem();
//-->
</script>
</body>
</html>
----------------------------------------------------------
Avatar billede nute Nybegynder
17. juli 2003 - 13:36 #1
Hmmm .... tricket består ganske enkelt i at de bruger "hash" propertien til "document.location" objectet. prøv selv:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function setMainUrl(val){
        top.location.hash=val;
    }
    //-->
    </script>
</head>
<body>
<a href="java script:void( setMainUrl( 'eksperten' ) );">Eksperten</a><br>
<a href="java script:void( setMainUrl( 'tv2' ) );">Tv2</a><br>
<a href="java script:void( setMainUrl( 'politiken' ) );">politiken</a><br>
</body>
</html>


det der sker, er simpelthen at de bare skifter ut den delen efter # i URL'en. hvad de bruger dette til, er så et helt andet spm ...

/nute
Avatar billede thulstrup Nybegynder
17. juli 2003 - 14:44 #2
Smart! Jeg har tidligere fået at vide at man ikke kunne ændre i adressefeltet uden at skulle reloade, så jeg blev lidt overrasket da jeg så det.

Ligger du et svar?
Avatar billede nute Nybegynder
17. juli 2003 - 14:57 #3
et svar ...

men stik mig kun 15 points og behold 85 points selv ;)

/nute
Avatar billede thulstrup Nybegynder
17. juli 2003 - 15:03 #4
Du kan få 30 og så gider jeg heller ikke høre mere brok ;-)
Avatar billede thulstrup Nybegynder
17. juli 2003 - 15:03 #5
...og mange tak for hjælpen!
Avatar billede nute Nybegynder
17. juli 2003 - 15:07 #6
selv tak :) any time
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