Buon giorno, come da titolo ho questo problema.
Praticamente il sito è strutturato in questo modo:
index.php, dove ci sono le classiche header, content,menu dx e sx, footer.
Ora le pagine vengono caricate nel content.
Nella index.php tra i tag <head></head> richiamo questi script, che mi servono per la navigazione:
Fin qui nulla di errato...codice:<script> /* * jQuery history plugin * * sample page: http://www.mikage.to/jquery/jquery_history.html * * Copyright (c) 2006-2009 Taku Sano (Mikage Sawatari) * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php * * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization * for msie when no initial hash supplied. */ jQuery.extend({ historyCurrentHash: undefined, historyCallback: undefined, historyIframeSrc: undefined, historyNeedIframe: jQuery.browser.msie && (jQuery.browser.version < 8 || document.documentMode < 8), historyInit: function(callback, src){ jQuery.historyCallback = callback; if (src) jQuery.historyIframeSrc = src; var current_hash = location.hash.replace(/\?.*$/, ''); jQuery.historyCurrentHash = current_hash; if (jQuery.historyNeedIframe) { // To stop the callback firing twice during initilization if no hash present if (jQuery.historyCurrentHash == '') { jQuery.historyCurrentHash = '#'; } // add hidden iframe for IE jQuery("body").prepend('<iframe id="jQuery_history" style="display: none;"'+ ' src="javascript:false;"></iframe>' ); var ihistory = jQuery("#jQuery_history")[0]; var iframe = ihistory.contentWindow.document; iframe.open(); iframe.close(); iframe.location.hash = current_hash; } else if (jQuery.browser.safari) { // etablish back/forward stacks jQuery.historyBackStack = []; jQuery.historyBackStack.length = history.length; jQuery.historyForwardStack = []; jQuery.lastHistoryLength = history.length; jQuery.isFirst = true; } if(current_hash) jQuery.historyCallback(current_hash.replace(/^#/, '')); setInterval(jQuery.historyCheck, 100); }, historyAddHistory: function(hash) { // This makes the looping function do something jQuery.historyBackStack.push(hash); jQuery.historyForwardStack.length = 0; // clear forwardStack (true click occured) this.isFirst = true; }, historyCheck: function(){ if (jQuery.historyNeedIframe) { // On IE, check for location.hash of iframe var ihistory = jQuery("#jQuery_history")[0]; var iframe = ihistory.contentDocument || ihistory.contentWindow.document; var current_hash = iframe.location.hash.replace(/\?.*$/, ''); if(current_hash != jQuery.historyCurrentHash) { location.hash = current_hash; jQuery.historyCurrentHash = current_hash; jQuery.historyCallback(current_hash.replace(/^#/, '')); } } else if (jQuery.browser.safari) { if(jQuery.lastHistoryLength == history.length && jQuery.historyBackStack.length > jQuery.lastHistoryLength) { jQuery.historyBackStack.shift(); } if (!jQuery.dontCheck) { var historyDelta = history.length - jQuery.historyBackStack.length; jQuery.lastHistoryLength = history.length; if (historyDelta) { // back or forward button has been pushed jQuery.isFirst = false; if (historyDelta < 0) { // back button has been pushed // move items to forward stack for (var i = 0; i < Math.abs(historyDelta); i++) jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop()); } else { // forward button has been pushed // move items to back stack for (var i = 0; i < historyDelta; i++) jQuery.historyBackStack.push(jQuery.historyForwardStack.shift()); } var cachedHash = jQuery.historyBackStack[jQuery.historyBackStack.length - 1]; if (cachedHash != undefined) { jQuery.historyCurrentHash = location.hash.replace(/\?.*$/, ''); jQuery.historyCallback(cachedHash); } } else if (jQuery.historyBackStack[jQuery.historyBackStack.length - 1] == undefined && !jQuery.isFirst) { // back button has been pushed to beginning and URL already pointed to hash (e.g. a bookmark) // document.URL doesn't change in Safari if (location.hash) { var current_hash = location.hash; jQuery.historyCallback(location.hash.replace(/^#/, '')); } else { var current_hash = ''; jQuery.historyCallback(''); } jQuery.isFirst = true; } } } else { // otherwise, check for location.hash var current_hash = location.hash.replace(/\?.*$/, ''); if(current_hash != jQuery.historyCurrentHash) { jQuery.historyCurrentHash = current_hash; jQuery.historyCallback(current_hash.replace(/^#/, '')); } } }, historyLoad: function(hash){ var newhash; hash = decodeURIComponent(hash.replace(/\?.*$/, '')); if (jQuery.browser.safari) { newhash = hash; } else { newhash = '#' + hash; location.hash = newhash; } jQuery.historyCurrentHash = newhash; if (jQuery.historyNeedIframe) { var ihistory = jQuery("#jQuery_history")[0]; var iframe = ihistory.contentWindow.document; iframe.open(); iframe.close(); iframe.location.hash = newhash; jQuery.lastHistoryLength = history.length; jQuery.historyCallback(hash); } else if (jQuery.browser.safari) { jQuery.dontCheck = true; // Manually keep track of the history values for Safari this.historyAddHistory(hash); // Wait a while before allowing checking so that Safari has time to update the "history" object // correctly (otherwise the check loop would detect a false change in hash). var fn = function() {jQuery.dontCheck = false;}; window.setTimeout(fn, 200); jQuery.historyCallback(hash); // N.B. "location.hash=" must be the last line of code for Safari as execution stops afterwards. // By explicitly using the "location.hash" command (instead of using a variable set to "location.hash") the // URL in the browser and the "history" object are both updated correctly. location.hash = newhash; } else { jQuery.historyCallback(hash); } } }); </script> <script type="text/javascript" src="jQueryHistoryBack/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="jQueryHistoryBack/jquery.history.js"></script> <script type="text/javascript"> // PageLoad function // This function is called when: // 1. after calling $.historyInit(); // 2. after calling $.historyLoad(); // 3. after pushing "Go Back" button of a browser function pageload(hash) { //alert("pageload: " + hash); // hash doesn't contain the first # character. if(hash) { // restore ajax loaded state if(jQuery.browser.msie) { // jquery's $.load() function does't work when hash include special characters like aao. hash = encodeURIComponent(hash); } //jQuery("#load").load("controlli.php?p=" + hash);//.html $("#load").load(hash + ".php"); } else { // start page jQuery("#load").empty(); } } jQuery(document).ready(function(){ // Initialize history plugin. // The callback is called at once by present location.hash. //$.historyInit(pageload, "home.php"); jQuery.historyInit(pageload, "chi_siamo.php"); // set onlick event for buttons jQuery("a[rel='history']").click(function(){ // var hash = this.href; hash = hash.replace(/^.*#/, ''); // moves to a new page. // pageload is called at once. // hash don't contain "#", "?" jQuery.historyLoad(hash); return false; }); }); if(window.location.hash==""){ jQuery(document).ready(function(){ jQuery("#load").load("controlli.php?p=chi_siamo");//.html return false; }); } </script> <script type="text/javascript" src="jQueryHistoryBack/scrolltopcontrol.js"> /*********************************************** * Scroll To Top Control script- © Dynamic Drive DHTML code library (www.dynamicdrive.com) * This notice MUST stay intact for legal use * Visit Project Page at http://www.dynamicdrive.com for full source code ***********************************************/ </script>
Il problema sorge quando carico la pagina infiniteCarousel.htm dove ho altri due script:
codice:<title>Infinite Carousel</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $.fn.infiniteCarousel = function () { function repeat(str, num) { return new Array( num + 1 ).join( str ); } return this.each(function () { var $wrapper = $('> div', this).css('overflow', 'hidden'), $slider = $wrapper.find('> ul'), $items = $slider.find('> li'), $single = $items.filter(':first'), singleWidth = $single.outerWidth(), visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border currentPage = 1, pages = Math.ceil($items.length / visible); // 1. Pad so that 'visible' number will always be seen, otherwise create empty items if (($items.length % visible) != 0) { $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible))); $items = $slider.find('> li'); } // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned')); $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned')); $items = $slider.find('> li'); // reselect // 3. Set the left position to the first 'real' item $wrapper.scrollLeft(singleWidth * visible); // 4. paging function function gotoPage(page) { var dir = page < currentPage ? -1 : 1, n = Math.abs(currentPage - page), left = singleWidth * dir * visible * n; $wrapper.filter(':not(:animated)').animate({ scrollLeft : '+=' + left }, 500, function () { if (page == 0) { $wrapper.scrollLeft(singleWidth * visible * pages); page = pages; } else if (page > pages) { $wrapper.scrollLeft(singleWidth * visible); // reset back to start position page = 1; } currentPage = page; }); return false; } $wrapper.after('<a class="arrow back"><</a><a class="arrow forward">></a>'); // 5. Bind to the forward and back buttons $('a.back', this).click(function () { return gotoPage(currentPage - 1); }); $('a.forward', this).click(function () { return gotoPage(currentPage + 1); }); // create a public interface to move to a specific page $(this).bind('goto', function (event, page) { gotoPage(page); }); }); }; $(document).ready(function () { $('.infiniteCarousel').infiniteCarousel(); }); </script>
All'apertura del sito tutto ok, ma quando carico la pagina infiniteCarousel.htm mi da questo errore:
Se invece, non la richiamo e navigo su altre pagine che non hanno script, praticamente non ho nessun errore.codice:jQuery.historyCallback is not a function.
Domanda: c'è un modo per ovviare a questo inconveniente?Come si fà per non mandare in conflitto due o più script?
Grazie mille...
Buona giornata a tuttiiiiiii![]()

Rispondi quotando