简体   繁体   English

jQuery脚本在IE中无法正常工作

[英]jQuery script doesn't work properly in IE

There is a jQuery script on my website with additional JS code. 我的网站上有一个带有其他JS代码的jQuery脚本。

Example: 例:

 $("[data-type='phone'] .input .form-control").intlTelInput({ allowDropdown: true, autoPlaceholder: "aggressive", initialCountry: "auto", geoIpLookup: function(success, failure) { $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) { var countryCode = (resp && resp.country) ? resp.country : ""; success(countryCode); }); }, }); let targets = document.querySelectorAll('.selected-flag'), options = { 'attributes': true }, observationHandler = function(mutations, observer) { for (let mutation of mutations) { let target = mutation.target, recipient = target.closest('div.fields').querySelector('[data-type="hidden"] input'); recipient.value = target.title; } }, observer = new MutationObserver(observationHandler); targets.forEach( (target) => observer.observe(target, options) ); 
 .field { padding: 10px 0; } .form-control { padding: 10px; } 
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/14.0.6/css/intlTelInput.css"> <h2>Main form on page</h2> <div class="fields"> <div class="field" data-type="phone" style="width: 247px;"> <div class="input"><input class="form-control text" type="text" data-placeholder="true" style="border-radius: 15px;"></div> </div> <div class="field" data-type="hidden" style="width: 247px;"> <div class="input"><input class="form-control" type="text" style="border-radius: 15px;" value="hidden content"></div> </div> </div> <!-- MODAL FORM 1 --> <h2>Modal form 1</h2> <div class="modal-body"> <div class="macros-form"> <div class="outer"> <div class="inner"> <div class="vertical none size-default"> <div class="body"> <div class="cont"></div> <form class="form text-top" data-form="" data-fields=""> <div class="fields"> <div class="field" data-type="phone"> <div class="name">Telefonnummer</div> <div class="input"><input class="form-control text" style="border-radius: 4px;"></div> </div> <div class="field hidden" data-type="hidden"> <div class="input"><input class="form-control hidden-field" value="Hidden field"></div> </div> </div> </form> <div class="cont"></div> </div> </div> </div> </div> </div> </div> <!-- MODAL FORM 2 --> <h2>Modal form 2</h2> <div class="modal-body"> <div class="macros-form"> <div class="outer"> <div class="inner"> <div class="vertical none size-default"> <div class="body"> <div class="cont"></div> <form class="form text-top" data-form="" data-fields=""> <div class="fields"> <div class="field" data-type="phone"> <div class="name">Telefonnummer</div> <div class="input"><input class="form-control text" style="border-radius: 4px;"></div> </div> <div class="field hidden" data-type="hidden"> <div class="input"><input class="form-control hidden-field" value="Hidden field"></div> </div> </div> <div class="macros-button"> <div class="btn-out full xs-none"> </div> </div> </form> <div class="cont"></div> </div> </div> </div> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/14.0.6/js/intlTelInput-jquery.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/14.0.6/js/utils.js"></script> 

Example: https://jsfiddle.net/kerm131/at5sL2jc/12/ 示例: https//jsfiddle.net/kerm131/at5sL2jc/12/

It works fine in Google Chrome, Opera, Edge and Mozilla browsers. 它可以在Google Chrome,Opera,Edge和Mozilla浏览器中正常工作。 But unfortunately, it doesn't work with IE 11. 但不幸的是,它不适用于IE 11。

Console shows that ";" 控制台显示“;” expected near this strings: 预期在以下字符串附近:

 observationHandler = function(mutations, observer) { for (let mutation of mutations) { let target = mutation.target, 

I don't know JS well, so I'm frustrated. 我不太了解JS,因此感到沮丧。 Please, give me a hint to to solve this issue. 请给我一个提示来解决这个问题。

I tried Babel service, but it doesn't works well in IE11: https://jsfiddle.net/kerm131/xpvt214o/984507/ 我尝试了Babel服务,但在IE11中效果不佳: https ://jsfiddle.net/kerm131/xpvt214o/984507/

In this case console says that object doesn't support property or method "forEach" in 在这种情况下,控制台表示该对象不支持以下属性或方法“ forEach”

 targets.forEach(function (target) { return observer.observe(target, options); }); 

To make it works I add polyfill library: 为了使其工作,我添加了polyfill库:

 <script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script> 

And change this: 并更改此:

 targets.forEach(function (target) { return observer.observe(target, options); }); 

to this: 对此:

 [].forEach.call(targets, function (target) { return observer.observe(target, options); }); 

(but I think it not necessary, first try without changing this string) (但我认为没有必要,请先尝试不更改此字符串)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM