<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lescinskas.lt</title>
    <description><![CDATA[Žymės įrašai :: html]]></description>
    <link>http://www.lescinskas.lt/lt/blog</link>
    <language>lt</language>
    <item>
      <title>Komunikacija su Iframe per Javascript bei JQuery</title>
      <description><![CDATA[<p>Iframe - HTML elementas, leidžiantis tam tikroje tinklalapio vietoje įkelti kito tinklalapio turinį.</p>
<p>Nors HTML5 buvo atsisakyta tradicinių rėmelių (frameset), tačiau Iframe yra plačiai naudojamas ir, panašu, kad ateityje šio elemento naudojimas bus dar intensyvesnis, žinant, jog tiek socialinių tinklų aplikacijų platformų (pvz.: OpenSocial), tiek ir įvairūs Interneto servisai (pvz.: Google Maps) veikimas pagrįstas Iframe pagrindu.</p>
<p>Komunikacija tarp pagrindinio tinklalapio ir Iframe'o Javascript pagalba galima tik tuo atveju, jei abu puslapiai yra užkraunami iš to paties domeno (pvz.: http://www.foo.com ir http://www.bar.com bus negalima). Netgi norint realizuoti komunikaciją tarp skirtingų 3 lygio domenų (pvz.: http://foo.example.com ir http://bar.example.com), būtina abiejuose puslapiuose nurodyti, kad šie abu tinklalapiai priklauso tam pačiam domenui. Tai galima padaryti Javascript komanda:</p>
<pre class="brush:javascript">
document.domain = 'example.com';
</pre>
<p>Norint realizuoti komunikaciją tarp skirtingų domenų, reiktų naudoti Iframe proxy. T.y. skriptas, esantis tame pačiame domene, turėtų tiesiog atvaizduoti kitame domene esančio puslapio HTML turinį.</p>
<p>Komunikaciją tarp pagrindinio puslapio ir į jį įterpto Iframe'o atspindi šie pavyzdžiai.</p>
<p>Pagrindinis puslapis (pvz.: index.html)</p>
<pre class="brush:xml">
&lt;html&gt;
&lt;head&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp; google.load(&quot;jquery&quot;, &quot;1.3.2&quot;);
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;iframe id=&quot;myIframe&quot; src=&quot;iframe.html&quot; width=&quot;100&quot; height=&quot;100&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;div id=&quot;foo&quot;&gt;FOO&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp; // Naudojant skirtingus subdomenus, nurodome bendrą domeną:
&nbsp;&nbsp;&nbsp; document.domain = 'example.com';
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $('#myIframe').load(function()
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // jQuery pavyzdys:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var frame = $('#myIframe').contents();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log('jQuery: ',frame.find('#bar').html());
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Javascript pavyzdys:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame = document.getElementById('myIframe').contentDocument;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Jei neveikia contentDocument, galima naudoti contentWindow.document
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log('JS: ', frame.getElementById('bar').innerHTML);
&nbsp;&nbsp;&nbsp; });
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Iframe puslapis (iframe.html)</p>
<pre class="brush:xml">
&lt;html&gt;
&lt;head&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp; google.load(&quot;jquery&quot;, &quot;1.3.2&quot;);
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;bar&quot;&gt;BAR&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&nbsp;&nbsp;&nbsp; // Naudojant skirtingus subdomenus, nurodome bendrą domeną:
&nbsp;&nbsp;&nbsp; document.domain = 'example.com';
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; // jQuery pavyzdys - ieškome #foo elemento window.parent.document kontekste
&nbsp;&nbsp;&nbsp; console.log('jQuery: ', $('#foo', window.parent.document).html());
&nbsp;&nbsp;&nbsp; // Javascript pavyzdys:
&nbsp;&nbsp;&nbsp; console.log('JS: ', window.parent.document.getElementById('foo').innerHTML);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Šie pavyzdžiai <a href="http://www.getfirebug.com">Firebug </a>konsolėje parodys atitnkamų elementų turinius.</p>]]></description>
      <pubDate>Thu, 22 Oct 2009 17:01:34 +0300</pubDate>
      <link>http://www.lescinskas.lt/lt/blog/entry/paulius/komunikacija-su-iframe-per-javascript-ir-jquery</link>
    </item>
    <item>
      <title>Iliustracijų korekcija RSS agregatoriuose</title>
      <description><![CDATA[<p><img height="100" width="100" src="/uploads/editor/image/flying-monkeys.gif" alt="Flying monkeys stole my icon" /></p>
<p>Neretai pasitaiko, jog tinklaraščių įrašuose kelias iki iliustracijų yra pateikiamas reliatyviai (pvz.: &lt;img src=&quot;/images/foo.bar&quot; /&gt;). Analogiškas HTML kodas bus pateikiamas ir to tinklaraščio RSS šaltinyje, todėl RSS skaitymo programose arba agregatoriuose tokia iliustracija daugeliu atveju nebus atvaizduota (nes bus ieškoma ne tinklaraščio, o agregatoriaus serveryje).</p>
<p>Šiai situacijai yra du sprendimo būdai: iliutracijų korekcija RSS šaltinyje arba RSS skaitymo programoje ar agregatoriuje (daugelis jų atlieka šį veiksmą).</p>
<p>Pateikiu PHP kodą, kuris tinka abiejais atvejais. Jis HTML kode esantiems paveikslėliams preprend'ina HTTP host'ą:</p>
<p><code><span style="color: rgb(0, 0, 0);"> <span style="color: rgb(0, 0, 187);">&lt;?php <br />
</span><span style="color: rgb(255, 128, 0);">//&nbsp;Tekstas,&nbsp;kurį&nbsp;reikia&nbsp;išparsinti: <br />
</span><span style="color: rgb(0, 0, 187);">$blogEntry&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(221, 0, 0);">'Kažkoks&nbsp;blogo&nbsp;įrašo&nbsp;tekstas&lt;b&gt;  <br />
&lt;img&nbsp;src=&quot;http://www.cards.lt/img/cards_logo_small.jpg&quot; <br />
alt=&quot;Logo&quot;&nbsp;/&gt;&lt;/b&gt; <br />
&lt;img&nbsp;alt=&quot;Logo&quot; <br />
src=&quot;/img/cards-125x125.jpg&quot;&nbsp;width=&quot;125&quot;&nbsp;height=&quot;125&quot;&nbsp;/&gt;'</span><span style="color: rgb(0, 119, 0);">; <br />
<br />
</span><span style="color: rgb(255, 128, 0);">//&nbsp;RSS'o&nbsp;URL,&nbsp;iš&nbsp;kurio&nbsp;parsinam&nbsp;įrašus&nbsp;(-ą)  <br />
</span><span style="color: rgb(0, 0, 187);">$blogUrl&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(221, 0, 0);">'http://www.lescinskas.lt/index.php/lt/blog/rss'</span><span style="color: rgb(0, 119, 0);">; <br />
<br />
</span><span style="color: rgb(0, 0, 187);">$parsedUrl&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">parse_url</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$blogUrl</span><span style="color: rgb(0, 119, 0);">); <br />
<br />
</span><span style="color: rgb(255, 128, 0);">//&nbsp;Išparsintas&nbsp;įrašas: <br />
</span><span style="color: rgb(0, 0, 187);">$parsedEntry&nbsp;</span><span style="color: rgb(0, 119, 0);">=&nbsp;</span><span style="color: rgb(0, 0, 187);">preg_replace</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">'/(&lt;\s*img&nbsp;[^\&gt;]*src\s*=\s*[\&quot;&quot;\']?)(\/[^\&quot;&quot;\'\s&gt;]*)/i'</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(221, 0, 0);">'\\1'</span><span style="color: rgb(0, 119, 0);">.</span><span style="color: rgb(0, 0, 187);">$parsedUrl</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'scheme'</span><span style="color: rgb(0, 119, 0);">].</span><span style="color: rgb(221, 0, 0);">'://'</span><span style="color: rgb(0, 119, 0);">.</span><span style="color: rgb(0, 0, 187);">$parsedUrl</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'host'</span><span style="color: rgb(0, 119, 0);">].</span><span style="color: rgb(221, 0, 0);">'\\2'</span><span style="color: rgb(0, 119, 0);">,&nbsp;</span><span style="color: rgb(0, 0, 187);">$blogEntry</span><span style="color: rgb(0, 119, 0);">);  <br />
<br />
echo&nbsp;</span><span style="color: rgb(0, 0, 187);">$parsedEntry</span><span style="color: rgb(0, 119, 0);">; <br />
</span><span style="color: rgb(0, 0, 187);">?&gt; <br />
</span> </span> </code></p>
<p>&nbsp;</p>]]></description>
      <pubDate>Tue, 12 Aug 2008 10:23:07 +0300</pubDate>
      <link>http://www.lescinskas.lt/lt/blog/entry/paulius/iliustraciju-korekcija-rss-agregatoriuose</link>
    </item>
  </channel>
</rss>

