Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum. Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden. Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!

We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.

Team Webprofis

popup new window

Zie deze fiddle: http://jsfiddle.net/Ax8Hz/34/
Boven elk pre block staat een anchor die de content van de pre tag eronder (met classeCodeBlock) catcht en opent in een nieuwe window.

Het bijbehorende js in de fiddle wordt in de head geladen en de api is 1.10.1
In de fiddle werkt alles perfect.

Deze zelfde structuur heb ik nu ook op het forum: http://develop3.webprofis.nl/discussion/460/test-code-block#
Als je in de code kijkt is hier exact dezelfde structuur an het js wordt geladen in de head onder de naam popupwindow.js
Aleen de jquery api is 1.10.2 ipv 1.10.1
Op het forum openen de popups met undefined
Heb geen idee waar ik dit probleem in moet zoeken; de html structuur is precies hetzelfde als in de fiddle
het enige wat ik me kan bedenken is dat het te maken heeft op de manier waarop de html gegenereerd wordt, en dat is via een js met livequery als onderdeel van een php string:


$SelectAnchor = '<a class="selectable">[Select All Code]</a>';
$CodeNewWindow = '<a href="#" onclick="popup(this)">[Open New Window]&nbsp;&nbsp;</a>';

$Result = "jQuery(document).ready(function($) {

$('.Message .CodeBlock', this).wrap('<div class=surroundpre></div>');

$('.surroundpre').prepend('$SelectAnchor');
$('.surroundpre').prepend('$CodeNewWindow');


var pp = false;

$('.Message').livequery(function () {


$('pre', this).addClass('prettyprint$Class');

$('pre').each(function(){
var id;
if ($(this).attr('id') == undefined){
id = 'id'+Math.floor((Math.random() * 99999999) + 1);
$(this).attr('id',id);

$(this).prev('a.selectable').attr('href','javascript:fnSelect(\"' + id + '\")');


}

});

if (pp)



prettyPrint();
$('pre', this).removeClass('prettyprint')

});


prettyPrint();
pp = true;





});";

Reacties

  • PMPosts: 879
    L-) L-) L-) Probleem gevonden:
    Er staan 2 .prepends op regel 8 en 9 hierboven. Dat mag blijkbaar niet. Als ik regel 8 schrap (Selectanchor) dan doet ie het wel...pffffff...heb hier uren naar gekeken en mijn kop over gebroken. Dat is dus het probleem.
    Enfin, ik moet dus dat Selectanchor op een andere manier gaan parsen dan via een 2e prepend()

  • bewerkt wo 23 dec 2015
    PMPosts: 415
    Ik heb niks getest ofzo, maar kun je niet gewoon zo iets doen?

    $('.surroundpre').prepend($SelectAnchor, $CodeNewWindow);
    of

    $('.surroundpre').prepend($SelectAnchor + $CodeNewWindow);
  • bewerkt do 24 dec 2015
    PMPosts: 879
    Hmmm...die laatste dan werkt de popup wel maar de selectcode weer niet... vreemd gedrag beetjje. heb het gevoel dat die anchors mekaar in de weg lopen op de een of andere manier
  • bewerkt do 24 dec 2015
    PMPosts: 879
    Hmmm...in de fiddle hetzelfde probleem als de 2 anchors samen zijn: http://jsfiddle.net/Ax8Hz/39/
    Nu "SelectAllCode" erbij staat werkt de Popup weer niet
  • bewerkt do 24 dec 2015
    PMPosts: 879
    Ik heb hem werkend!!! 8-}
    Er gingen een aantal dingen fout:
    Die 2e prepend was het probleem niet maar heb nu onderstaande prepend():

    $('.surroundpre').prepend('$SelectAnchor' + '$CodeNewWindow');
    Dit was de originele js voor de popup:

    function popup(obj)
    {
    var myHtml = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Popup</title></head><body>' +
    $(obj).next('.CodeBlock').html() +
    '</body></html>';

    var generator = window.open('','name','height=400,width=500');
    generator.document.body.innerHTML = myHtml;
    }
    Op regel 4 hierboven: de next() kijkt naar volgende element maar niet naar de classe; nextAll() en first() gebruikt op regel 4:

    $(obj).nextAll('.CodeBlock').first().html() +
    Nu had ik nog het probleem dat het anchor SelectAllcode niet het attribuut toegewezen kreeg:

    $(this).prev('a.selectable').attr('href','javascript:fnSelect(\"' + id + '\")');
    De prev() hierboven zoekt wederom niet naar classe selectable maar naar het eerst voorgaande anchor; en dat was nu net die Popup ipv SelectAllCode; dus dit was de fix: prevAll()

    $(this).prevAll('a.selectable').attr('href','javascript:fnSelect(\"' + id + '\")');

    http://develop3.webprofis.nl/discussion/460/test-code-block#




Login of Registreer om te reageren.