WordPress.org

Make WordPress Core

Ticket #16695: 16695.diff

File 16695.diff, 5.0 KB (added by garyc40, 7 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