Jump to content
php.lv forumi
  • 0

Ravējas ārā javascript...


artis

Question

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ā.

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

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

Link to comment
Share on other sites

  • 0

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
Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

  • 0

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...

Link to comment
Share on other sites

  • 0

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.

Link to comment
Share on other sites

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...