2013-02-28 2 views
0

onClick 이미지를 미리로드하려고하는데이 스크립트는 Google 크롬을 제외하고 작동합니다 (그리고 Safari를 상상할 수도 있음). 무슨 일이 일어나고 있는지 확실하지 않습니다. 누구든지 아이디어가 있습니까?크롬은 자바 스크립트에서 이미지를 미리로드하지 않습니다. Works on IE, FF

<div style="display:hidden"> 
    <script type="text/javascript"> 
     <!--//--><![CDATA[//><!-- 
      var images = new Array() 
      function preload() { 
       for (i = 0; i < preload.arguments.length; i++) { 
        images[i] = new Image() 
        images[i].src = preload.arguments[i] 
       } 
      } 
      preload(

      <?php 
       for ($i = 0; $i < 6; $i++) { 
        if (!empty($imgs[$i])) { 
         $comma = $i == 0? '' : ','; 
         echo $comma."'http://www.htpcusa.com/drcom/ebay/image.php?img_source_url=" . $imgs[$i] . "&img_resize_to=500'"; 
        } 
       } 
      ?> 

      ) 
     //--><!]]> 
    </script> 
</div> 

이미지는이 코드를 통해 나중에 호출됩니다.

 <?php 
      for ($i = 0; $i < 6; $i++) { 
       if (!empty($imgs[$i])) { 
        echo "<div class=\"htpc_picturebox\">"; 
        echo "<img id=\"imgs$i\" src=\"http://www.htpcusa.com/drcom/ebay/image.php?img_source_url=" . $imgs[$i] . "&img_resize_to=157\" alt=\"\""; 
        echo " onClick=\"javascript:document.getElementById('detailed_image').src='http://www.htpcusa.com/drcom/ebay/image.php?img_source_url=" . $imgs[$i] . "&img_resize_to=500';\" />"; 
        echo "</div>"; 
       } 
      } 
     ?> 

그렇다면 IE와 FF가 인식하지 못하는 것은 무엇입니까?

+0

working jsfiddle은 또한 제 ... 크롬 여전히 온 클릭에 보온재를 통해 이미지를로드하려고 그 모양 게다가 ... FF, IE에서 여전히 즉석 인 동안 ... – Brandon

+0

"일하지 않는 것"에 대해 자세히 설명 할 수 있습니까? 당신이 게시 한 js는 내 크롬 버전 27.0.1423.0 dev-m에서 작동합니다. 네트워크 탭 [F12]을 볼 때 이미지를 다운로드 할 수 있습니다. – VeXii

+0

이 작업을 실행할 때 ... 이미지가 2 ~ 3 초 걸립니다. IE, FF 등의 인스턴트 대신로드 ... 미리로드 스크립트가 제거되면 ... 모든 브라우저가 동일한 2-3 초가 걸립니다. 'echo "onClick = \"javascript : document.getElementById ('detailed_image') .src = 'http : //www.htpcusa.com/drcom/ebay/image.php? img_source_url = ". $ imgs [$ i ] : "& img_resize_to = 500 '; \"/>' – Brandon

답변

-1

preload 함수는 정의에서 인수를 취하지 않지만 매개 변수를 보내려고합니다. PHP 출력을 통해 preload 함수에 매개 변수를 보내는 대신, PHP 출력을 통해 images 배열을 초기화 할 수 있습니다. 예 :

<? 
$i=0; 
while (something) { 
echo "images[{$i}] = {$img}"; 
$i++; 
?> 
+0

OP가'preload() '로 보내지는 인수를 처리하기 위해'arguments' 키워드를 사용하려고 시도하고 있지만 VeXii가 가리키는 것처럼 올바르게 수행하지는 않습니다. – jfriend00

+0

흠 ... 지금 나는 그것이 크롬일지도 모른다라고 생각한다. ..JS를 사용하는 것. .. 나는 처음에 이미지를 처음에 무작위로 쌓았다. .. 그리고 IE와 비교되는 크롬 (2-3 초)의 LAG가 아직도있다. 그리고 FF ... (IE, FF)는 순식간에 변경됩니다 ... 크롬과 동일한 동작을 사전로드하지 않고 ... 도대체 무슨 일이 벌어지는 지 = ON g ( – Brandon

1

arguments.length하지 functionname.arguments.length
어레이 구문 var images = []이다하지만

+0

@ VeXii 변경된 코드! '' 그러나 여전히 Chrome에서는 작동하지 않습니다. 또한 숨겨진 div를 통해 파일에 이미지를로드하려고 시도 ... 그리고 여전히 크롬은로드에 오랜 시간이 걸립니다 – Brandon

+0

[this] (http://jsfiddle.net/UyheK/)에서 봐야합니다 – VeXii

+0

흠 ... 여전히 작동하지 않습니다. Chrome에서 ...이 문제는 Chrome에서 발생하는 문제입니다. 페이지 시작 부분에서 일반 div에 필요한 이미지를로드하려고했으나 (단지 img src = ""를 사용) onClick은 여전히 ​​뒤떨어져 있습니다 ... 잘 모르겠습니다. 무슨 일 이니? – Brandon