Avatar billede annex Nybegynder
25. august 2009 - 16:52 Der er 1 løsning

Ajax Page Fetch eller lignende

Jeg har en webside hvorpå jeg har lavet en række faneblade i indholdsfeltet (der er overordnede menuer). I hvert faneblad er det meningen at jeg vil udstille indhold fra andre websider fra samme domæne. Mit site ligger i Obvius CMS.

Jeg har forsøgt at bruge Ajax Page Fetch til at hente indhold fra en underliggende webside til et af fanebladene - det fungerer sådan set fint, men jeg får hele siden med (inkl menuer o.s.v.) og jeg er kun interesseret i at få det indhold der ligger i div id="content" med.

Er der nogen der ved om det kan lade sig gøre og i så fald hvordan? Det behøver ikke være med Ajax Page Fetch, det kan også være et andet script.


/***********************************************
* Ajax Page Fetcher- by JavaScript Kit (www.javascriptkit.com)
***********************************************/

var ajaxpagefetcher={
loadingmessage: "Loading Page, please wait...",
exfilesadded: "",

connect:function(containerid, pageurl, bustcache, jsfiles, cssfiles){
    var page_request = false
    var bustcacheparameter=""
    if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
        page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE6 or below
        try {
        page_request = new ActiveXObject("Msxml2.XMLHTTP")
        }
        catch (e){
            try{
            page_request = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e){}
        }
    }
    else
        return false
    var ajaxfriendlyurl=pageurl.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
    page_request.onreadystatechange=function(){ajaxpagefetcher.loadpage(page_request, containerid, pageurl, jsfiles, cssfiles)}
    if (bustcache) //if bust caching of external page
        bustcacheparameter=(ajaxfriendlyurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
    document.getElementById(containerid).innerHTML=ajaxpagefetcher.loadingmessage //Display "fetching page message"
    page_request.open('GET', ajaxfriendlyurl+bustcacheparameter, true)
    page_request.send(null)
},

loadpage:function(page_request, containerid, pageurl, jsfiles, cssfiles){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
        document.getElementById(containerid).innerHTML=page_request.responseText
        for (var i=0; i<jsfiles.length; i++)
            this.loadjscssfile(jsfiles[i], "js")
        for (var i=0; i<cssfiles.length; i++)
            this.loadjscssfile(cssfiles[i], "css")
        this.pageloadaction(pageurl) //invoke custom "onpageload" event
    }
},

createjscssfile:function(filename, filetype){
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    return fileref
},

loadjscssfile:function(filename, filetype){ //load or replace (if already exists) external .js and .css files
    if (this.exfilesadded.indexOf("["+filename+"]")==-1){ //if desired file to load hasnt already been loaded
        var newelement=this.createjscssfile(filename, filetype)
        document.getElementsByTagName("head")[0].appendChild(newelement)
        this.exfilesadded+="["+filename+"]" //remember this file as being added
    }
    else{ //if file has been loaded already (replace/ refresh it)
    var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist using
    var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
    var allsuspects=document.getElementsByTagName(targetelement)
    for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
      if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1){
      var newelement=this.createjscssfile(filename, filetype)
      allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i])
      }
        }
}
},


pageloadaction:function(pageurl){
    this.onpageload(pageurl) //call customize onpageload() function when an ajax page is fetched/ loaded
},

onpageload:function(pageurl){
//do nothing by default
},

load:function(containerid, pageurl, bustcache, jsfiles, cssfiles){
    var jsfiles=(typeof jsfiles=="undefined" || jsfiles=="")? [] : jsfiles
    var cssfiles=(typeof cssfiles=="undefined" || cssfiles=="")? [] : cssfiles
    this.connect(containerid, pageurl, bustcache, jsfiles, cssfiles)
}

} //End object
Avatar billede annex Nybegynder
25. august 2009 - 16:57 #1
Spørgsmål oprettet forkert
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
Kurser inden for grundlæggende programmering

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