• User Newbie

    INSERIRE BASE Href con jquery

    Buon di!
    Non sarà facile ma provo a spiegare il mio problema!!!

    1 - Nel mio sito, carico da una pagina HTML esterna, dei collegamenti ad immagini:

    page html esterna ( previsioni in html ):[TABLE]
    

    [TD="class: line-number"][/TD]
    [TD="class: line-content"] <a style="color: red;fontsize:8pt" href="javascript:changeImage('/immagine1111.....................GIF')">2016-03-07 03:00 <br></a>[/TD]
    [/TR]

    [TD="class: line-number"][/TD]
    [TD="class: line-content"] <a style="color: red;font-size:8pt" href="javascript:changeImage('/immagine2222.....................GIF')">2016-03-07 06:00 <br></a>

    Attenzione, la pagina però contiene collegamenti relativi    **href="/immagine1111..............GIF"** , per tanto ho pensato ad un tag base.
    <BASE HREF=".........it">
    

    [/TD]
    [/TR]

    [TD="class: line-number"][/TD]
    [TD="class: line-content"]2 - Il href delle immagini, essendo previsioni meteo, cambia giorno per giorno, quindi ho necessità non di collegarmi semplicemente alle immagini staticamente, ma di caricarle nel mio sito, attraverso l'attributo _get della pagina html che li contiene.
    Quindi carico i link nel seguente modo e li inserisco in un "menu0":

    <a href="javascript:menufunc('menu0')"><p style="">Calendario<br></p></a>
    <div id="menu0" style="">
    <?php echo file_get_contents('...........it/previsioni.html'); ?>
    </div>

    3 - Una volta caricati, attraverso lo script, imposto le azioni:[/TD]
    [/TR]
    [/TABLE]
    function startmenu()

    {
    document.getElementById('menu0').style.display = "none";
    }

    function menufunc(menuId)

    {

    if(document.getElementById(menuId).style.display == "none")
    
    
    {
    
    
        startmenu();
    
    
        document.getElementById(menuId).style.display = "block";
                
                $('#menu0 a').css('font-size', '1em').css('color', '#3F576A').css('line-height', '2.2em')
                              .css('font-family', 'Arial').css('text-decoration', 'none');
    

    $(document).ready(function() {
    $('a').bind("mouseover", function(){
    var color = $(this).css("color");

            $(this).css("color", "red");
    
    
            $(this).bind("mouseout", function(){
                $(this).css("color", color);
            })    
        })    
    })
               
    
    
    }
    else
    

    {

    startmenu();
    }
    }

    function changeImage(filename)
    {
    document.getElementById('mainimage').src = filename;
    }

    </script>

    **in questa parte finale in rosso, imposto dove mostrare le immagini e come caricarle.

    **
    Il tutto funziona perfettamente!
    Io però non contento, volevo sostituire il tag BASE, inserendo all'interno dello script una funzione che mi trasformasse i collegamenti relativi della pagina html, in assoluti!!!
    Sono 10 giorni che ci sto provando in tutte le maniere....niente da fare!!
    Spero di essermi riuscito a spiegare decentemente!!
    qualcuno mi sa dire dove posso trovare qualcosa di attinente???
    Vi ringrazio sin da subito per l'aiuto!

    ps: ho provato inserendo la var base ma niente:

    var base = document.createElement('base');
    base.href = ' ........it/';
    document.getElementsById('mainimage')[0].appendChild(base);


  • Moderatore

    Ciao nicolawind,

    devo dire che la tua esposizione non è proprio molto chiara, ma comunque credo di aver capito che cosa ti serve.

    Per cambiare i tuoi url relativi in assoluti uno per uno, devi creare un ciclo in questa maniera ( $("#selettore a") sarà il tuo selettore di riferimento per ogni tag href relativo, cambialo in base al tuo codice 😞

    
    <script>
    var path = "http://www.ilmiopercorso.it";
    $("#selettore a").each(function(){
    var url = $(this).attr("href");
    $(this).attr("href",path+url);
    })
    </script>
    
    

    Questo piccolo script ti aggiunge il prefisso del tuo url assoluto ad ogni attributo href del selettore scelto.


  • User Newbie

    ho provato tutte le salse...ma niente da fare......posto il codice usato!

    <script>var path = "ilmiopercorso.it";$("#selettore a").each(function(){var url = $(this).attr("href");$(this).attr("href",path+url);});</script><a id="selettore" href="/percorsorelativo.htm"> prova </a>


  • Moderatore

    C'eri quasi, hai sbagliato solo una cosa. Questo è il sorgente:

    
    <div id="selettore">
    <a href="/percorsorelativo.htm"> prova </a>
      <a href="/percorsorelativo.htm"> prova </a>
      <a href="/percorsorelativo.htm"> prova </a>
      <a href="/percorsorelativo.htm"> prova </a>
    </div>
    <script>
    var path = "ilmiopercorso.it";
    $("#selettore a").each(function(){
      var url = $(this).attr("href");
      $(this).attr("href",path+url);
    })
    </script>
    
    

    Ovviamente prima di questo script devi aver incluso jQuery, sennò non funziona.

    Questo è un pen funzionante: http://codepen.io/anon/pen/NNrMBW


  • User Newbie

    Grazie mille ....purtroppo colpa mia...non è quello che cercavo! uffi
    Ci riprovo.
    Allora, con <?php echo file_get_contents('paginaesterna.html'); ?>, carico l'elenco di immagini, però le immagini non si vedono a schermo perchè l'src è un percorso relativo, quindi i tag immagini ci sono nella pagina, ma non si vedono a video, la lista delle immagini insomma, è di questo genere:
    <img src="/immagine1.gif">
    <img src="/immagine2.gif">
    <img src="/immagine3.gif">
    Per far sì che le immagini si vedano a video ho usato un tag <base href="paginaesterna.html'>. Tutto funziona.

    Io vorrei evitare di usare il tag base href, in quanto ovviamente, tutti i collegamenti cambiano la url modificata dal tag base.

    Un altra possibilità che ho provato è la seguente:
    <?php define('BASE_URL', 'paginaesterna.html');?>
    <img src="<?php echo BASE_URL; ?>percorsorelativoimmagine.gif" />

    però nel mio caso specifico che carico le immagini con <?php echo file_get_contents('paginaesterna.html'); ?>non funziona.
    Quello che vorrei fare è inserire il tag base a tutta la lista di immagini che carico da una fonte esterna del mio sito.
    Grazie ancora!


  • Moderatore

    Beh il codice che ti ho postato fà quello che dici, ma con il tag HREF anzichè SRC. Se mi posti il tuo output html specifico dei div con i tag img dentro ti posto lo script io, ma prima provaci tu.
    Adesso sai che il funzionamento essenzialmente è quello dello script che ti ho postato, devi solo personalizzarlo.

    Poi un'altra cosa, scegli: Se farlo in Javascript o PHP, sono due cose diverse.. la soluzione che mi hai chiesto era in Javascript.


  • User Newbie

    Ti chiedo scusaaaaaaaaaa! Hai ragione....

    <script>
    var path = "sitoesterno.it";
    $("#selettore img").each(function(){
    var url = $(this).attr("src");
    $(this).attr("src",path+url);
    })
    </script>

    Funziona benissimo!!!
    Come libreria ho usato quella presa dal pen funzionante che mi hai postato!!!
    Veramente mille grazie, adesso posso procedere con i lavori!
    Sto creando una pagina meteo con le previsioni per uso personale!! Se vuoi poi posto il codice completo che possa aiutare altri!
    Grazie ancora


  • User Newbie

    ciao miwebdesign
    ho ripreso questa discussione.....
    dopo essere riuscito ad elaborare quello che volevo grazie al tuo prezioso aiuto, altrimenti non ci sarei mai riuscito....
    ho necessità di capire perchè il lavoro svolto non funziona più.
    posso postare il codice completo???

    di seguito il codice:
    <title>Previsioni dell'Onda in Italia | TanaOnda</title>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script src="/slidemeteo/sss.min.js"></script>
    <link rel="stylesheet" href="/slidemeteo/sss.css" type="text/css" media="all">

    <script>
    jQuery(function($) {
    $('.slider1').sss();
    });
    </script>

    <script type="text/javascript">
    (function(){
    if (window.addEventListener)
    {
    window.addEventListener("load", nascondi_loading_screen, false);
    }else{
    window.attachEvent("onload", nascondi_loading_screen);
    }
    })();
    function mostra_loading_screen()
    {
    document.getElementById("loading_screen").style.display = 'block';
    }
    function nascondi_loading_screen()
    {
    document.getElementById("loading_screen").style.display = 'none';
    }
    </script>

    <style type="text/css">
    #loading_screen
    {
    display: none;
    position: absolute;
    left: 0px;
    top: 0px;
    height: 100%;
    width: 100%;
    background-color: black;
    color: white;
    text-align: center;
    padding-top: 100px;
    opacity: 0.5;
    filter: alpha(opacity=50);
    }
    a:link, a:visited, a:active {text-decoration: none; color:#3F576A; }
    a:hover {text-decoration: none; color:#FF5C00;transition:all 0.7s ease-out 0s;}
    div:hover {transition:all 0.7s ease-out 0s;}
    p {
    font-size: 1.2em;
    line-height: 1.2em;
    font-weight: 100;
    }
    a {
    font-family: 'Anke';
    src: url(./index_file/font/Anke.eot);
    src: local('Anke'), url('./index_file/font/Anke.ttf') format('truetype');
    }

    </style>

    <div id="loading_screen">
    <h1>Loading...</h1>
    <p>Pagina in caricamento!<br/>
    </p>
    </div>
    <script type="text/javascript">
    mostra_loading_screen();
    </script>

    <div style="top:0;text-align:center;margin-left:5%;">

    <a href="javascript:history.go(-1)">
    <div style="width:20%;float:left;border:2px solid;border-color:#999;margin-right:1%;">
    <p><< Torna</p></div></a>

    <a href="https://www.tanaonda.it/index_file/meteo/ondaitalia.php" target="_top">
    <div style="width:20%;float:left;border:2px solid;border-color:#999;">
    <p>Full Screen >></p></div></a>

    </div>
    <div style="clear:both"> </div>

    <div style="width:100%;height:100%;margin-top:0%;text-align:center;">

    <div id="selettore" class="slider1" style="">
    <?php echo file_get_contents('http://ricerca.ismar.cnr.it/MODELLI/ONDE_MED_ITALIA/ITALIA_WHDD_IMG.html'); ?>
    </div>
    <div style="clear:both"></div>

    <script>
    var path = "http://ricerca.ismar.cnr.it/MODELLI/ONDE_MED_ITALIA";
    $("#selettore img").each(function(){
    var url = $(this).attr("src");
    $(this).attr("src",path+url);
    })
    </script>
    </div>
    <div style="clear:both"></div>

    praticamente, le immagini non mi vengono più mostrate.
    la pagina di riferimento è tanaonda.it/meteo.php