Jump to content
php.lv forumi
  • 0

Ravējas ārā javascript...


Question

Posted

Sveiki.

Vajag fancybox`ā ielādēt lapu no linka (ar class="fulldesc"), un, no ielādējamās lapas ir jāparāda tikai <div id="#center_column_fancy">saturs</div>.

 

$(document).ready(function() {
 $("a.fulldesc").fancybox({
   'overlayOpacity':0.5,
   'ajax': {
       dataFilter: function(data) {
         return $(data).find('#center_column_fancy')[0];
       }
   }
});
});

 

Lapa fancybox`ā ielādējas, tikai viņa satur arī "<script type='text/javascript'>php ģenerēts skripts</script>", kurš šajā lapā neielādējas (skripts no satura tiek izravēts). Kapēc ? Skripta linku nevaru taisīt, jo php tur viņā saliek variabļu vērtības - jāliek viņu lapā.

11 answers to this question

Recommended Posts

  • 0
Posted

Errori nav, cik saprotu, tad jquery`s ravē ārā skriptus..

 

Ļoti saīsināts pieprasītās lapas kods ir šāds:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="lv">
<head>
	<title>aaaaa</title>
	<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
	<meta name="robots" content="index,follow" />
</head>

<body id="product">
   <div id="center_column">
     <div id="center_column_fancy">

       <div id="ggg">
         <script type="text/javascript">
           alert('hi'); 
         </script>
       </div>
       <div id="kaut kas">
         saturs
       </div>

     </div>
   </div>
 </body>
</html>

 

Atgrieztais rezultāts izskatās šāds:

     <div id="center_column_fancy">

       <div id="ggg">
       </div>
       <div id="kaut kas">
         saturs
       </div>

     </div>

...atgrieztais rezultāts ir pareizs, ja neskaita, ka nav javascript`a

  • 0
Posted (edited)

Nesaprotu, ko tu ar to visu esi domājis, vai arī tu neesi sapratis mani. Centīšos vēlreiz pastāstīt.

Man ir lapa kategorija.php , kuras satura izrāvums:

...
<head>
 ...
 $(document).ready(function() {
   $("a.fulldesc").fancybox({
     'overlayOpacity':0.5,
     'ajax': {
         dataFilter: function(data) {
           return $(data).find('#center_column_fancy')[0];
         }
     }
         });
 });
 ...
</head>
<body>
 ...
 <div class="center_block">	
    <h3>
     <a rel="grupa" class="fulldesc" href="http://localhost/uuu/product.php?id_product=5" title="nosaukums">Nosaukums</a>
    </h3>
 </div>
 ...
</body>

Nospiežot uz linka man vajag, lai viņš fancybox`ā ielādē to lapu, uz kuru ved links (product.php?id_product=5).

 

Links, kad viņu atver bez fancybox`a (vienkārši atcerot adresi http://localhost/uuu/product.php?id_product=5) satur sourci:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="lv">
       <head>
               <title>aaaaa</title>
               <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
               <meta name="robots" content="index,follow" />
       </head>

       <body id="product">
   <div id="center_column">
     <div id="center_column_fancy">

       <div id="ggg">
         <script type="text/javascript">
           alert('hi'); 
         </script>
       </div>
       <div id="kaut kas">
         saturs
       </div>

     </div>
   </div>
 </body>
</html>

 

Taču, atveroties ar fancybox, fancybox satur:

<div id="center_column_fancy">
 <div id="ggg">
 </div>
 <div id="kaut kas">
   saturs
 </div>
</div>

Respektīvi - nepareizi ir tas, ka div "ggg" vairs nesatur javascript, kad atver ar fancybox. Domāju, ka vainīgs ir dataFilter, bet nezinu, kā ar to tikt galā.

Edited by artis
  • 0
Posted

jāiztiek ir bez dataFilter tad. Saīsini kodu lapai jau php puse pie ajax pieprasījuma

Lieta tāda, ka

1) es cenšos modificēt vienu internetveikala sistēmu, kur visu kodu ģenerē smarty dzinējs, kur, attiecīgi ir daudz failu, kuri viens otru čeko un ir viens no otra atkarīgi.

2) es vēlos saglabāt oriģinālo php izvadu, lai meklētājroboti var atvērt to produktu lapu, neapgraizītu (lai ir valīds html kods). Tamdēļ man vajag, lai viss liekais atmestos tikai, kad lapa tiek pieprasīta caur fancybox.

  • 0
Posted (edited)

pamēģini šitā

dataFilter: function(data) {
$('<div>').html(data).remove();
return $('#center_column_fancy', data)[0];
}

Edited by indoom
  • 0
Posted

pamēģini šitā

dataFilter: function(data) {
$('<div>').html(data).remove();
return $('#center_column_fancy', data)[0];
}

 

Lai cik tas dīvaini neliktos, tagad viņš man alerto "hi", kad veras vaļā fancybox, bet es ģenerētajā sourcē neredzu to javascript kodu...

  • 0
Posted

Tas nav dīvaini. Pirmā funkcijas rinda nav galīgi saistīta ar return rindu, kuru pēc tam redz sourcē.

Nu, labi, paldies, vis taka strādā, laigan bez poņas, kas tur notiek taj otrajā rindā :)

  • 0
Posted

Otrā rinda ir tā pati, kas tev bija, tikai man personīgi šitā labāk patīk rakstīt

$('#center_column_fancy', data)[0]; === $(data).find('#center_column_fancy')[0];

Un tā kā šitā rinda bija, kas iztīra to js no koda, tad pirms tam ielieku visu oriģinālo html stringu tukšā divā, kurš nekur neparādas, bet izpilda js.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...