Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Problema target

  1. #1

    Problema target

    Salve a tutti! SOno nuova del forum, e sono qui per cercare disperatamente aiuto
    Ho scaricato la fotogallery ImageFlow 0.8 (molto carina) però mi sorge un problema, quando clicco su un'immagine vorrei cambiare il suo target, ossia vorrei che la foto si aprisse in un'altra pagina e non nella stessa... dovrei inserire un target="_blank" a qualche parte o che altro??
    Premesso che non capisco nulla di javascript, ma sto da poco imparando il php (quindi sono una superdilettante anche in questo)... come fare per cambiare questo benedetto target??

    Codice
    /* Configuration variables */
    var conf_reflection_p = 0.5; // Sets the height of the reflection in % of the source image
    var conf_focus = 4; // Sets the numbers of images on each side of the focussed one
    var conf_slider_width = 14; // Sets the px width of the slider div
    var conf_images_cursor = 'pointer'; // Sets the cursor type for all images default is 'default'
    var conf_slider_cursor = 'default'; // Sets the slider cursor type: try "e-resize" default is 'default'

    /* Id names used in the HTML */
    var conf_imageflow = 'imageflow'; // Default is 'imageflow'
    var conf_loading = 'loading'; // Default is 'loading'
    var conf_images = 'images'; // Default is 'images'
    var conf_captions = 'captions'; // Default is 'captions'
    var conf_scrollbar = 'scrollbar'; // Default is 'scrollbar'
    var conf_slider = 'slider'; // Default is 'slider'

    /* Define global variables */
    var caption_id = 0;
    var new_caption_id = 0;
    var current = 0;
    var target = 0;
    var mem_target = 0;
    var timer = 0;
    var array_images = new Array();
    var new_slider_pos = 0;
    var dragging = false;
    var dragobject = null;
    var dragx = 0;
    var posx = 0;
    var new_posx = 0;
    var xstep = 150;


    function step()
    {
    switch (target < current-1 || target > current+1)
    {
    case true:
    moveTo(current + (target-current)/3);
    window.setTimeout(step, 50);
    timer = 1;
    break;

    default:
    timer = 0;
    break;
    }
    }

    function glideTo(x, new_caption_id)
    {
    /* Animate gliding to new x position */
    target = x;
    mem_target = x;
    if (timer == 0)
    {
    window.setTimeout(step, 50);
    timer = 1;
    }

    /* Display new caption */
    caption_id = new_caption_id;
    caption = img_div.childNodes.item(array_images[caption_id]).getAttribute('alt');
    if (caption == '') caption = '';
    caption_div.innerHTML = caption;

    /* Set scrollbar slider to new position */
    if (dragging == false)
    {
    new_slider_pos = (scrollbar_width * (-(x*100/((max-1)*xstep))) / 100) - new_posx;
    slider_div.style.marginLeft = (new_slider_pos - conf_slider_width) + 'px';
    }
    }

    function moveTo(x)
    {
    current = x;
    var zIndex = max;

    /* Main loop */
    for (var index = 0; index < max; index++)
    {
    var image = img_div.childNodes.item(array_images[index]);
    var current_image = index * -xstep;

    /* Don't display images that are not conf_focussed */
    if ((current_image+max_conf_focus) < mem_target || (current_image-max_conf_focus) > mem_target)
    {
    image.style.visibility = 'hidden';
    image.style.display = 'none';
    }
    else
    {
    var z = Math.sqrt(10000 + x * x) + 100;
    var xs = x / z * size + size;

    /* Still hide images until they are processed, but set display style to block */
    image.style.display = 'block';

    /* Process new image height and image width */
    var new_img_h = (image.h / image.w * image.pc) / z * size;
    switch ( new_img_h > max_height )
    {
    case false:
    var new_img_w = image.pc / z * size;
    break;

    default:
    new_img_h = max_height;
    var new_img_w = image.w * new_img_h / image.h;
    break;
    }
    var new_img_top = (images_width * 0.34 - new_img_h) + images_top + ((new_img_h / (conf_reflection_p + 1)) * conf_reflection_p);

    /* Set new image properties */
    image.style.left = xs - (image.pc / 2) / z * size + images_left + 'px';
    image.style.height = new_img_h + 'px';
    image.style.width = new_img_w + 'px';
    image.style.top = new_img_top + 'px';
    image.style.visibility = 'visible';

    /* Set image layer through zIndex */
    switch ( x < 0 )
    {
    case true:
    zIndex++;
    break;

    default:
    zIndex = zIndex - 1;
    break;
    }

    /* Change zIndex and onclick function of the focussed image */
    switch ( image.i == caption_id )
    {
    case false:
    image.onclick = function() { glideTo(this.x_pos, this.i); }
    break;

    default:
    zIndex = zIndex + 1;
    image.onclick = function() { document.location = this.url; }
    break;
    }
    image.style.zIndex = zIndex;
    }
    x += xstep;
    }
    }

    /* Main function */
    function refresh(onload)
    {
    /* Cache document objects in global variables */
    imageflow_div = document.getElementById(conf_imageflow);
    img_div = document.getElementById(conf_images);
    scrollbar_div = document.getElementById(conf_scrollbar);
    slider_div = document.getElementById(conf_slider);
    caption_div = document.getElementById(conf_captions);

    /* Cache global variables, that only change on refresh */
    images_width = img_div.offsetWidth;
    images_top = imageflow_div.offsetTop;
    images_left = imageflow_div.offsetLeft;
    max_conf_focus = conf_focus * xstep;
    size = images_width * 0.5;
    scrollbar_width = images_width * 0.6;
    conf_slider_width = conf_slider_width * 0.5;
    max_height = images_width * 0.51;

    /* Change imageflow div properties */
    imageflow_div.style.height = max_height + 'px';

    /* Change images div properties */
    img_div.style.height = images_width * 0.338 + 'px';

    /* Change captions div properties */
    caption_div.style.width = images_width + 'px';
    caption_div.style.marginTop = images_width * 0.03 + 'px';

    /* Change scrollbar div properties */
    scrollbar_div.style.marginTop = images_width * 0.02 + 'px';
    scrollbar_div.style.marginLeft = images_width * 0.2 + 'px';
    scrollbar_div.style.width = scrollbar_width + 'px';

    /* Set slider attributes */
    slider_div.onmousedown = function () { dragstart(this); };
    slider_div.style.cursor = conf_slider_cursor;

    /* Cache EVERYTHING! */
    max = img_div.childNodes.length;
    var i = 0;
    for (var index = 0; index < max; index++)
    {
    var image = img_div.childNodes.item(index);
    if (image.nodeType == 1)
    {
    array_images[i] = index;

    /* Set image onclick by adding i and x_pos as attributes! */
    image.onclick = function() { glideTo(this.x_pos, this.i); }
    image.x_pos = (-i * xstep);
    image.i = i;

    /* Add width and height as attributes ONLY once onload */
    if(onload == true)
    {
    image.w = image.width;
    image.h = image.height;
    }

    /* Check source image format. Get image height minus reflection height! */
    switch ((image.w + 1) > (image.h / (conf_reflection_p + 1)))
    {
    /* Landscape format */
    case true:
    image.pc = 118;
    break;

    /* Portrait and square format */
    default:
    image.pc = 100;
    break;
    }

    /* Set ondblclick event */
    image.url = image.getAttribute('longdesc');
    image.ondblclick = function() { document.location = this.url; }

    /* Set image cursor type */
    image.style.cursor = conf_images_cursor;

    i++;
    }
    }
    max = array_images.length;

    /* Display images in current order */
    moveTo(current);
    glideTo(current, caption_id);
    }

    /* Show/hide element functions */
    function show(id)
    {
    var element = document.getElementById(id);
    element.style.visibility = 'visible';
    }
    function hide(id)
    {
    var element = document.getElementById(id);
    element.style.visibility = 'hidden';
    element.style.display = 'none';
    }

    /* Hide loading bar, show content and initialize mouse event listening after loading */
    window.onload = function()
    {
    if(document.getElementById(conf_imageflow))
    {
    hide(conf_loading);
    refresh(true);
    show(conf_images);
    show(conf_scrollbar);
    initMouseWheel();
    initMouseDrag();
    }
    }

    /* Refresh ImageFlow on window resize */
    window.onresize = function()
    {
    if(document.getElementById(conf_imageflow)) refresh();
    }

    /* Handle the wheel angle change (delta) of the mouse wheel */
    function handle(delta)
    {
    var change = false;
    switch (delta > 0)
    {
    case true:
    if(caption_id >= 1)
    {
    target = target + xstep;
    new_caption_id = caption_id - 1;
    change = true;
    }
    break;

    default:
    if(caption_id < (max-1))
    {
    target = target - xstep;
    new_caption_id = caption_id + 1;
    change = true;
    }
    break;
    }

    /* Glide to next (mouse wheel down) / previous (mouse wheel up) image */
    if (change == true)
    {
    glideTo(target, new_caption_id);
    }
    }

    /* Event handler for mouse wheel event */
    function wheel(event)
    {
    var delta = 0;
    if (!event) event = window.event;
    if (event.wheelDelta)
    {
    delta = event.wheelDelta / 120;
    }
    else if (event.detail)
    {
    delta = -event.detail / 3;
    }
    if (delta) handle(delta);
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
    }

    /* Initialize mouse wheel event listener */
    function initMouseWheel()
    {
    if(window.addEventListener) imageflow_div.addEventListener('DOMMouseScroll', wheel, false);
    imageflow_div.onmousewheel = wheel;
    }

    /* This function is called to drag an object (= slider div) */
    function dragstart(element)
    {
    dragobject = element;
    dragx = posx - dragobject.offsetLeft + new_slider_pos;
    }

    /* This function is called to stop dragging an object */
    function dragstop()
    {
    dragobject = null;
    dragging = false;
    }

    /* This function is called on mouse movement and moves an object (= slider div) on user action */
    function drag(e)
    {
    posx = document.all ? window.event.clientX : e.pageX;
    if(dragobject != null)
    {
    dragging = true;
    new_posx = (posx - dragx) + conf_slider_width;

    /* Make sure, that the slider is moved in proper relation to previous movements by the glideTo function */
    if(new_posx < ( - new_slider_pos)) new_posx = - new_slider_pos;
    if(new_posx > (scrollbar_width - new_slider_pos)) new_posx = scrollbar_width - new_slider_pos;

    var slider_pos = (new_posx + new_slider_pos);
    var step_width = slider_pos / ((scrollbar_width) / (max-1));
    var image_number = Math.round(step_width);
    var new_target = (image_number) * -xstep;
    var new_caption_id = image_number;

    dragobject.style.left = new_posx + "px";
    glideTo(new_target, new_caption_id);
    }
    }

    /* Initialize mouse event listener */
    function initMouseDrag()
    {
    document.onmousemove = drag;
    document.onmouseup = dragstop;
    }

    function getKeyCode(event)
    {
    event = event || window.event;
    return event.keyCode;
    }

    document.onkeydown = function(event)
    {
    var charCode = getKeyCode(event);
    switch (charCode)
    {
    /* Right arrow key */
    case 39:
    handle(-1);
    break;

    /* Left arrow key */
    case 37:
    handle(1);
    break;
    }
    }
    Ho incollato tutto il codice della pagina, poichè non avrei proprio idea di dove dover andare a mattere mano... ho solo individuato che all'evento doppio click deve aprirmi l'immagine (vorrei in un'altra pagina!)
    Qualche anima pia disposto ad aiutarmi??
    Grazie mille in anticipo a tutti!

  2. #2
    Nessuno proprio sa aiutarmi???

    /* Set ondblclick event */
    image.url = image.getAttribute('longdesc');
    image.ondblclick = function() { window.location = this.url; }

    Come inserisco il target _blank?? Non conosco la sintassi del javascript, vi prego aiutatemi!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    13
    anche io ho questo problema!!
    Ho fatto un po di tentativi ma niente. Non ho, però, una buona conoscenza del JavaScript.
    Vediamo un pò se qualcuno è capace!!

  4. #4
    A dire il vero risolsi quasi subito il problema... se hai bisogno chiedi pure, magari posso aiutarti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    13
    sarebbe fantastico!!
    ti ho inviato una mail con il codice
    a presto

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    13
    OK il problema lo conosci già, sto utilizzando la fotogallery ImageFlow 0.8 sul mio sito (www.studioporpora.it) dove scorrono alcuni siti che ho realizzato.
    Il problema è che quando clicco sull'immagine/anteprima il sito selto si apre nella stessa pagina.
    Vorre riuscire a modificare il tag per far aprire il sito scelto in una nuova pagina (target="_blank").

    ECCO IL CODICE!!!


    <!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" lang="de">
    <head>
    <title>studioporpora.it</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta name="language" content="de" />
    <meta name="description" content="studioporpora.it - Graphic Design"/>
    <meta name="keywords" content="ImageFlow, image flow, CoverFlow, cover flow, Javascript, imageflow in javascript, coverflow in javascript" />
    <meta name="robots" content="index, follow, noarchive" />
    <link rel="shortcut icon" href="favicon.ico" type="image/ico" />
    <link rel="stylesheet" title="Standard" href="screen.css" type="text/css" media="screen" />
    <script language="JavaScript" type="text/javascript" src="imageflow.js"></script>
    </head>
    <body>
    <h1 align="center">studioporpora.it

    </h1>
    <div id="imageflow">
    <div id="loading">
    Loading images

    [img]loading.gif[/img]
    </div>
    <div id="images">
    [img]reflect.php?img=img/img001.png[/img]
    [img]reflect.php?img=img/img002.png[/img]
    [img]reflect.php?img=img/img003.png[/img]
    [img]reflect.php?img=img/img004.png[/img]
    [img]reflect.php?img=img/img005.png[/img]
    [img]reflect.php?img=img/img006.png[/img]
    [img]reflect.php?img=img/img007.png[/img]
    </div>
    <div id="captions"></div>
    <div id="scrollbar">
    <div id="slider"></div>
    </div>
    </div>

    <div class="clear">info@studioporpora.it</div>

    </body>
    </html>

  7. #7
    Ti ho già risposto in privato se non erro.... se non ti è arrivata dimmelo che te lo riscrivo qui.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    13
    non infatti non ho ricevuto niente.
    scrivimi a gegen69@yahoo.it
    grazie

  9. #9
    Questo forum è un po' incasinato, cmq se vai nel tuo profilo trovi il messaggio che ti ho inviato ieri sera. In ogni caso, ti incollo quanto scritto:

    Questo che hai incollato dovrebbe essere il codice di gallery.php, mentre tu devi andare ad agire sul file imageflow.js, e cercare dove trovi scritto "image.onclick = function() { " (attenzione, ce ne sono due, dovresti andare ad agire sul secondo sostituendo "document.location = this.url; " con "window.open(this.url, '_blank');" ) Prova un po' se funziona e fammi sapere. Io ho risolto così.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    13
    Ottimo!! Funziona!!
    In realtà ho modificato il secondo e il terzo "image.onclick = function() ma adesso funziona.
    Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.