【问题标题】:prepend/append works in Chrome and Firefox but not IE11 and Edgeprepend/append 适用于 Chrome 和 Firefox,但不适用于 IE11 和 Edge
【发布时间】:2018-02-23 01:30:48
【问题描述】:

尝试在 Chrome 和 Firefox 的文本框中添加数据是可行的。 获取错误:SCRIPT438:对象不支持属性或方法“前置” 在 IE11 和 Edge 中。谢谢

    function init_TGs(){
        if (confirm("Initialize TinyG's?")){
            $.ajax({
                type: 'POST',
                url: "init_TGs", 
                data: 'None',
                success: function(result){
                    if (result != ''){
                        var rslt= result;
                        var item = document.getElementById('TextArea1');
                        item.prepend(rslt);
                    }}
                });
            }};

【问题讨论】:

    标签: jquery ajax internet-explorer microsoft-edge prepend


    【解决方案1】:

    或者,您可以使用 insertBefore 函数 supported by all browsers,而不是添加新的 polyfill:

    var rslt= result;
    var item = document.getElementById('TextArea1');
    item.insertBefore(rslt, item.childNodes[0]);
    

    【讨论】:

      【解决方案2】:

      IE 和 Edge 不支持 javascript prepend 方法,因此要使 prepend 方法起作用,您需要使用 polyfill。

      (function (arr) {
        arr.forEach(function (item) {
          if (item.hasOwnProperty('prepend')) {
            return;
          }
          Object.defineProperty(item, 'prepend', {
            configurable: true,
            enumerable: true,
            writable: true,
            value: function prepend() {
              var argArr = Array.prototype.slice.call(arguments),
                docFrag = document.createDocumentFragment();
      
              argArr.forEach(function (argItem) {
                var isNode = argItem instanceof Node;
                docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));
              });
      
              this.insertBefore(docFrag, this.firstChild);
            }
          });
        });
      })([Element.prototype, Document.prototype, DocumentFragment.prototype]);
      

      用法

      document.getElementById("some_id").prepend(Element-you-want-to-prepend)
      

      更多信息查看

      https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend#Polyfill

      【讨论】:

        【解决方案3】:

        https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend#Browser_compatibility Prepend 不支持 IE 和 edge。 而不是 Prepend 只是尝试用一些其他功能重写业务逻辑。

        【讨论】:

          【解决方案4】:

          好的,使用 jquery。简单的解决方案:

          $(document).ready(function(){
              $('#button-sel').on('click', function(event) {
                  var targ = event.target.id;
                  //alert("You clicked on: " + targ);
                  $.ajax({
                      type: 'POST',
                      url: targ, 
                      data: 'none',
                      success: function(result){
                          if (result != ''){
                              var rslt= result;
                              $('#TextArea1').prepend(result);
                      }}
                  });
          });})
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-08-03
            • 1970-01-01
            • 2023-01-14
            • 2021-05-07
            • 2019-11-15
            • 2021-06-05
            • 2019-10-26
            • 1970-01-01
            相关资源
            最近更新 更多