Любой лайтбокс для междоменного iframe - PullRequest
2 голосов
/ 25 января 2011

Многое по этой теме, но решения не найдено ... :( Ищем лайтбокс для картинок в кросс-доменной среде

Заранее спасибо.

1 Ответ

1 голос
/ 26 января 2011

Я не совсем уверен, что именно вы спрашиваете здесь, но если вы хотите обойти междоменные ограничения JS, вы всегда можете создать на своем сервере страницу PHP (или что-то подобное), которая извлекает изображения из другой домен и служит им в качестве локального.

Вот некоторый код jQuery для изменения атрибута src объекта изображения для отображения определенного изображения. Допустим, мы хотим показать изображение http://www.someotherdomain.com/images/pictureofbacon.png ....

var urlStr = 'http://www.someotherdomain.com/images/pictureofbacon.png';

//encode the image's url for passing 
var url_enc = encodeURIComponent(urlStr); 

$('#imageBacon').attr(
    'src', 'http://www.yourdomain.com/getPhoto?url=' + url_enc
); //call your php page, passing to it the encode image url 

Затем на своей странице PHP вы можете получить URL-адрес и обработать изображение локально. Этот PHP проверен на работу (требуется GD2), при условии, что вы передаете ему действительный URL изображения.

getPhoto.php

<?php
    $url = $_REQUEST['url'];
    SendImageToBrowser ($url); 

    function SendImageToBrowser($file){
     $info = getimagesize($file);
  $final_width=$info[0];
  $final_height=$info[1];

     switch ( $info[2] ) {
       case IMAGETYPE_GIF:
         $image = imagecreatefromgif($file);
        break;
       case IMAGETYPE_JPEG:
         $image = imagecreatefromjpeg($file);
        break;
       case IMAGETYPE_PNG:
         $image = imagecreatefrompng($file);
        break;
       default:
         return false;
     }
     imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);
        $mime = image_type_to_mime_type($info[2]);
        header("Content-type: $mime");
        $output = NULL;

     switch ( $info[2] ) {
       case IMAGETYPE_GIF:
         imagegif($image, $output);
       break;
       case IMAGETYPE_JPEG:
         imagejpeg($image, $output);
       break;
       case IMAGETYPE_PNG:
         imagepng($image, $output);
       break;
       default:
         return false;
     }
     return true;
 }
?>
...