WordPress.org

Make WordPress Core

Ticket #16695: 16695.diff

File 16695.diff, 5.0 KB (added by garyc40, 3 years ago)

don't use document.write(), and output toolbar when DOM is ready

  • wp-includes/general-template.php

    diff --git wp-includes/general-template.php wp-includes/general-template.php
    index 19194f2..1cd0e92 100644
    function the_editor($content, $id = 'content', $prev_id = 'title', $media_button 
    18271827?> 
    18281828        <div id="quicktags"><?php 
    18291829        wp_print_scripts( 'quicktags' ); ?> 
    1830         <script type="text/javascript">edToolbar()</script> 
     1830        <div id="ed_toolbar"> 
     1831        </div> 
    18311832        </div> 
    18321833 
    18331834<?php 
  • wp-includes/js/quicktags.dev.js

    diff --git wp-includes/js/quicktags.dev.js wp-includes/js/quicktags.dev.js
    index 48b7b6a..95ccc4e 100644
     
    44 
    55var edButtons = new Array(), edLinks = new Array(), edOpenTags = new Array(), now = new Date(), datetime; 
    66 
     7// cross browser dom ready 
     8var DOMReady = function(func) { 
     9        if (typeof jQuery != 'undefined') { 
     10                jQuery(document).ready(func); 
     11        } else { 
     12                var t = DOMReady, DOMContentLoaded, top; 
     13                        t.funcs = []; 
     14 
     15                t.ready = function() { 
     16                        if (! t.isReady) { 
     17                                t.isReady = true; 
     18                                for (var i=0; i < t.funcs.length; i++) { 
     19                                        t.funcs[i](); 
     20                                } 
     21                        } 
     22                }; 
     23 
     24                if (t.isReady) { 
     25                        func(); 
     26                } else { 
     27                        t.funcs.push(func); 
     28                } 
     29                 
     30                if ( ! t.eventAttached ) { 
     31                        if (document.addEventListener) { 
     32                                DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();}; 
     33                                document.addEventListener('DOMContentLoaded', DOMContentLoaded, false); 
     34                                window.addEventListener('load', t.ready, false); 
     35                        } else if (document.attachEvent) { 
     36                                DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}}; 
     37                                document.attachEvent('onreadystatechange', DOMContentLoaded); 
     38                                window.attachEvent('onload', t.ready); 
     39                                 
     40                                (function(){ 
     41                                        try { 
     42                                                document.documentElement.doScroll("left"); 
     43                                        } catch(e) { 
     44                                                setTimeout(arguments.callee, 50); 
     45                                                return; 
     46                                        } 
     47                                         
     48                                        t.ready(); 
     49                                })(); 
     50                        } 
     51                         
     52                        t.eventAttached = true; 
     53                } 
     54        } 
     55}; 
     56 
     57DOMReady(edToolbar); 
     58 
    759function edButton(id, display, tagStart, tagEnd, access, open) { 
    860        this.id = id;                           // used to name the toolbar button 
    961        this.display = display;         // label on button 
    edLinks[edLinks.length] = new edLink('alexking.org' 
    154206 
    155207function edShowButton(button, i) { 
    156208        if (button.id == 'ed_img') { 
    157                 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />'); 
     209                return '<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />'; 
    158210        } 
    159211        else if (button.id == 'ed_link') { 
    160                 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />'); 
     212                return '<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />'; 
    161213        } 
    162214        else { 
    163                 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '"  />'); 
     215                return '<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '"  />'; 
    164216        } 
    165217} 
    166218 
    function edShowLinks() { 
    170222                tempStr += '<option value="' + i + '">' + edLinks[i].display + '</option>'; 
    171223        } 
    172224        tempStr += '</select>'; 
    173         document.write(tempStr); 
     225        return tempStr; 
    174226} 
    175227 
    176228function edAddTag(button) { 
    function edSpell(myField) { 
    253305} 
    254306 
    255307function edToolbar() { 
    256         document.write('<div id="ed_toolbar">'); 
     308        var tb = document.getElementById('ed_toolbar'), html = ''; 
     309 
    257310        for (var i = 0; i < edButtons.length; i++) { 
    258                 edShowButton(edButtons[i], i); 
     311                html += edShowButton(edButtons[i], i); 
    259312        } 
    260         document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="' + quicktagsL10n.dictionaryLookup + '" value="' + quicktagsL10n.lookup + '" />'); 
    261         document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="' + quicktagsL10n.closeAllOpenTags + '" value="' + quicktagsL10n.closeTags + '" />'); 
    262 //      edShowLinks(); // disabled by default 
    263         document.write('</div>'); 
     313         
     314        html += '<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="' + quicktagsL10n.dictionaryLookup + '" value="' + quicktagsL10n.lookup + '" />'; 
     315        html += '<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="' + quicktagsL10n.closeAllOpenTags + '" value="' + quicktagsL10n.closeTags + '" />'; 
     316 
     317        // html += edShowLinks(); // disabled by default 
     318        tb.innerHTML = html; 
    264319} 
    265320 
    266321// insertion code