{"id":1359,"date":"2012-09-19T16:07:16","date_gmt":"2012-09-19T16:07:16","guid":{"rendered":"https:\/\/blog.ecotronics.ch\/wordpress\/?p=1359"},"modified":"2012-09-19T18:02:33","modified_gmt":"2012-09-19T18:02:33","slug":"fancybox-mit-zeilenumbruch-im-titel","status":"publish","type":"post","link":"https:\/\/blog.ecotronics.ch\/wordpress\/?p=1359","title":{"rendered":"Fancybox mit Zeilenumbruch im Titel"},"content":{"rendered":"<div id=\"attachment_1362\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch.jpg\"><img aria-describedby=\"caption-attachment-1362\" decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-1362\" title=\"Ein Titel mit Umbr\u00fcchen in Fancybox und Tooltip\" src=\"https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch-300x197.jpg\" alt=\"\" width=\"300\" height=\"197\" srcset=\"https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch-300x197.jpg 300w, https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch-150x98.jpg 150w, https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch-400x263.jpg 400w, https:\/\/blog.ecotronics.ch\/wordpress\/wp-content\/uploads\/2012\/09\/FancyboxTitleMitUmbruch.jpg 1009w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1362\" class=\"wp-caption-text\">Ein Titel mit Umbr\u00fcchen in Fancybox und Tooltip<\/p><\/div>\n<p>K\u00fcrzlich habe ich etwas Zeit gehabt, meinen Website zu \u00fcberarbeiten. Dabei habe ich zwei meiner Blumenseiten mit Bildern illustriert, n\u00e4mlich den <a href=\"https:\/\/www.ecotronics.ch\/blumen\/blumenfinder.aspx\" target=\"_blank\">Blumenfinder<\/a> und die Liste mit den <a href=\"https:\/\/www.ecotronics.ch\/blumen.aspx\" target=\"_blank\">Kulturanleitungen<\/a>. F\u00fcr die Bildanzeige verwende ich <a href=\"http:\/\/jquery.org\/\" target=\"_blank\">JQuery 1.7<\/a> und das JQuery-Plugin <a href=\"http:\/\/fancybox.net\/\" target=\"_blank\">fancybox 2.0.6<\/a>. Die Listen selbst werden mit ASP.Net aus einer Datenbank generiert. Da meine Bildbeschriftungen ziemlich kompliziert sind (deutscher und lateinischer Name, Autor\/in sowie URL der Quelle), h\u00e4tte ich sie gerne <strong>mit dem &lt;br\/&gt;-Tag umgebrochen<\/strong>. Dabei bin ich aber \u00fcber die Tatsache gestolpert, dass <strong>Fancybox den Titel aus dem Attribut title des &lt;a&gt;-Tags holt<\/strong>. In einem HTML-Attribut ist normalerweise kein HTML erlaubt.<\/p>\n<p>Wenn man &lt;br\/&gt; direkt in das Title-Tag schreibt, dann wird zwar der Titel in der Fancybox korrekt umgebrochen, aber der Tooltip auf dem kleinen Bild zeigt ein h\u00e4ssliches &lt;br\/&gt; an. Gibt man \\n statt &lt;br\/&gt; im Attribut title ein, dann bricht der Tooltip korrekt um, aber der Umbruch wird von der Fancybox ignoriert.<\/p>\n<p>F\u00fcr die L\u00f6sung ben\u00f6tigt man etwas JavaScript sowie vertiefte Kenntnisse des APIs von Fancybox. Aufpassen muss man auch beim Googeln: Als erstes st\u00f6sst man auf einen L\u00f6sungsvorschlag mit der option titleFormat. Diese L\u00f6sung bezieht sich aber auf Versionen vor 2.0 und scheint mit den aktuellen Versionen des Plugins nicht zu funktionieren.<\/p>\n<p>Voraussetzung ist, dass man die Bilder in 2 Versionen hat, eine kleine f\u00fcr die Thumbnails und eine grosse f\u00fcr die Anzeige in der Fancybox. Als n\u00e4chstes muss man JQuery und Fancybox herunterladen und in einem Ordner des Websites speichern (JQuery kann man auch direkt verlinken. Dann werden im Header der aspx-Seite alle Packages verlinkt, ungef\u00e4hr so:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n      src=&quot;http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.7\/jquery.min.js&quot;&gt;\r\n    &lt;\/script&gt;\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n      src=&quot;\/js\/fancybox\/lib\/jquery.mousewheel-3.0.6.pack.js&quot;&gt;\r\n    &lt;\/script&gt;\r\n    &lt;!-- Add fancyBox --&gt;\r\n    &lt;link rel=&quot;stylesheet&quot; type=&quot;text\/css&quot; media=&quot;screen&quot;\r\n       href=&quot;\/js\/fancybox\/source\/jquery.fancybox.css?v=2.0.6&quot; \/&gt;\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n       src=&quot;\/js\/fancybox\/source\/jquery.fancybox.pack.js?v=2.0.6&quot;&gt;&lt;\/script&gt;\r\n\r\n    &lt;!-- Optionally add helpers - button, thumbnail and\/or media --&gt;\r\n    &lt;link rel=&quot;stylesheet&quot; \r\n      href=&quot;\/js\/fancybox\/source\/helpers\/jquery.fancybox-buttons.css?v=1.0.2&quot; \r\n      type=&quot;text\/css&quot; media=&quot;screen&quot; \/&gt;\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n      src=&quot;\/js\/fancybox\/source\/helpers\/jquery.fancybox-buttons.js?v=1.0.2&quot;&gt;\r\n    &lt;\/script&gt;\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n       src=&quot;\/js\/fancybox\/source\/helpers\/jquery.fancybox-media.js?v=1.0.0&quot;&gt;\r\n    &lt;\/script&gt;\r\n\r\n    &lt;link rel=&quot;stylesheet&quot; \r\n      href=&quot;\/js\/fancybox\/source\/helpers\/jquery.fancybox-thumbs.css?v=2.0.6&quot; \r\n      type=&quot;text\/css&quot; media=&quot;screen&quot; \/&gt;\r\n    &lt;script type=&quot;text\/javascript&quot; \r\n       src=&quot;\/js\/fancybox\/source\/helpers\/jquery.fancybox-thumbs.js?v=2.0.6&quot;&gt;\r\n    &lt;\/script&gt;\r\n<\/pre>\n<p>Die Aufbereitung der Liste erfolgt rein deklarativ in einem GridView. In der Spalte mit den Bildern braucht man einerseits eine Bild- und zus\u00e4tzlich eine Hyperlink-Komponente, die in einem TemplateField verpackt werden. Da der Titel aus mehreren Datenbankfeldern, die gef\u00fcllt oder leer sein k\u00f6nnen, zusammengesetzt wird, ergibt sich in der aspx-Seite f\u00fcr die Spalte folgender Code:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n          &lt;asp:TemplateField HeaderText=&quot;Bild&quot; SortExpression=&quot;bildpfad&quot;&gt;\r\n            &lt;ItemTemplate&gt;\r\n              &lt;asp:HyperLink ID=&quot;HyperLink1&quot; runat=&quot;server&quot; CssClass=&quot;fancybox&quot; \r\n                NavigateUrl='&lt;%# &quot;http:\/\/dl.dropbox.com\/u\/51556921\/imgblumeng\/&quot; \r\n                   + Eval(&quot;bildpfad&quot;) %&gt;' \r\n                Visible='&lt;%#!DBNull.Value.Equals(Eval(&quot;bildpfad&quot;)) \r\n                   &amp;&amp; !DBNull.Value.Equals(Eval(&quot;QuelleBild&quot;)) &amp;&amp; !Eval(&quot;QuelleBild&quot;).Equals(&quot;&quot;) \r\n                   &amp;&amp; !Eval(&quot;QuelleBild&quot;).Equals(&quot; &quot;) %&gt;' \r\n                   rel=&quot;group&quot;\r\n                   title='&lt;%# Eval(&quot;name_l_d&quot;) + \r\n                     (DBNull.Value.Equals(Eval(&quot;AutorenBild&quot;)) ? &quot;&quot; : &quot;\\n&quot; + Eval(&quot;AutorenBild&quot;)) \r\n                     + (DBNull.Value.Equals(Eval(&quot;UrlBild&quot;)) ? &quot;&quot; : &quot;\\n&quot; + Eval(&quot;UrlBild&quot;))%&gt;'&gt;\r\n                &lt;asp:Image ID=&quot;Image1&quot; runat=&quot;server&quot; \r\n                  ImageUrl='&lt;%# &quot;http:\/\/dl.dropbox.com\/u\/51556921\/imgblumenk\/&quot; \r\n                    + Eval(&quot;bildpfad&quot;) %&gt;' \r\n                  Visible='&lt;%#!DBNull.Value.Equals(Eval(&quot;QuelleBild&quot;))%&gt;' \r\n                  Height=&quot;80&quot; \/&gt;\r\n            &lt;\/asp:HyperLink&gt;\r\n            &lt;\/ItemTemplate&gt;\r\n            &lt;HeaderStyle HorizontalAlign=&quot;Left&quot; VerticalAlign=&quot;Top&quot; \/&gt;\r\n          &lt;\/asp:TemplateField&gt;\r\n<\/pre>\n<p>Der springende Punkt sind die zwei <strong>&#8220;\\n&#8221;<\/strong> im Attribut <strong>title<\/strong> der Komponente <asp:HyperLink>. Damit wird der Tooltip f\u00fcr den Hyperlink korrekt umgebrochen. Nun fehlt uns noch das JavaScript, das diesen Umbruch durch das HTML-Tag &lt;br\/&gt; ersetzt. Der JavaScript-Befehl, um alle Umbr\u00fcche in einem String zu ersetzen lautet:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nmyString.replace(\/\\n\/g, &quot;&lt;br\/&gt;&quot;);\r\n<\/pre>\n<p>Nun muss man diesen Befehl noch in die Callback-Method beforeLoad von Fancybox h\u00e4ngen (funktioniert nur ab Version 2, siehe <a target=\"_blank\" href=\"http:\/\/fancyapps.com\/fancybox\/#docs\">Doku<\/a>). Wenn man noch m\u00f6chte, dass die grossen Bilder bereits angezeigt werden, wenn man mit der Maus \u00fcber die kleinen Vorschaubilder f\u00e4hrt (auf gut Neudeutsch: beim Hovern \u00fcber die Thumbnails), dann definiert man f\u00fcr die Fancybox noch eine Funktion auf dem Hover-Ereignis. Alles zusammen sieht dann so aus:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  &lt;script type=&quot;text\/javascript&quot;&gt;\r\n    $(document).ready(function () {\r\n      $(&quot;.fancybox&quot;).fancybox({\r\n        beforeLoad: function () {\r\n          this.title = this.title.replace(\/\\n\/g, &quot;&lt;br\/&gt;&quot;);\r\n        },\r\n        helpers: {\r\n          title: {\r\n            type: 'float' \r\n          },\r\n          overlay: null\r\n        }\r\n      }).hover(function () {\r\n        $(this).click();\r\n      });\r\n      ;\r\n    });\r\n  &lt;\/script&gt;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p id=\"caption-attachment-1362\" class=\"wp-caption-text\">Ein Titel mit Umbr\u00fcchen in Fancybox und Tooltip<\/p>\n<p>K\u00fcrzlich habe ich etwas Zeit gehabt, meinen Website zu \u00fcberarbeiten. Dabei habe ich zwei meiner Blumenseiten mit Bildern illustriert, n\u00e4mlich den Blumenfinder und die Liste mit den Kulturanleitungen. F\u00fcr die Bildanzeige verwende ich JQuery 1.7 und das JQuery-Plugin fancybox 2.0.6. Die Listen selbst werden mit [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":1362,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[63,34,35],"tags":[156,157],"_links":{"self":[{"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1359"}],"collection":[{"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1359"}],"version-history":[{"count":18,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1359\/revisions"}],"predecessor-version":[{"id":1371,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1359\/revisions\/1371"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/1362"}],"wp:attachment":[{"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ecotronics.ch\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}