javascript - 用于 swagger 的 Js/Jquery 注入脚本未在 IE11 上运行
问题描述
我遇到此代码无法在 IE11 上运行的问题,我不知道出了什么问题。我对 java scrip 和 Jquery 都是全新的,这是我在 Net 中招摇的扩展脚本。网络 API。
基本上它的作用:它添加了 2 个带有 API 组/版本的新选择。一切都在 chrome 上运行良好。
(function (){
var DiscoveryUrlSelector = Backbone.View.extend({
render: function ()
{
// Nerenderuj opakovanÄ na reloadu
var defaultVal = this.$el.val()
if (!this.$el.find('#input_' + this.options.name).length) {
var container = $('<div class="input"></div>');
var select = $('<select id="input_' + this.options.name + '" name="' + this.options.name + '"></select>');
select
.css('border', '1px solid gray')
.css('padding', '3px')
.css('width', '100px')
.css('font-size', '0.9em');
_.each(this.options.discoveryPaths, function (path)
{
var option = $('<option>' + path + '</option>');
select.append(option);
});
select.val(defaultVal);
if (this.options.name == 'Group')
select.change(LoadVersionsForGroup);
select.change(SetVersionedGroup);
container.append(select);
$("#api_selector > div:nth-child(2)").after(container);
}
return this;
}
});
new DiscoveryUrlSelector(
{
el: $('#api_selector'),
name: 'Version',
rootUrl: swashbuckleConfig.rootUrl,
discoveryPaths: Array.from(new Set(swashbuckleConfig.discoveryPaths.map(x => x.substring(x.lastIndexOf("v"), x.length))))
}).render();
new DiscoveryUrlSelector(
{
el: $('#api_selector'),
name: 'Group',
rootUrl: swashbuckleConfig.rootUrl,
discoveryPaths: Array.from(new Set(swashbuckleConfig.discoveryPaths.map(x => x.substring(13, x.lastIndexOf("v")))))
}).render();
function LoadVersionsForGroup()
{
$('#input_Version option').each(function () {$(this).remove();});
var versions = unique(swashbuckleConfig.discoveryPaths.filter(x => (x) => { return $("#input_Group").val() === x.substring(13, x.lastIndexOf("v")) }).map(x => x.substring(x.lastIndexOf("v"), x.length)))
_.each(versions, function (path)
{
var option = $('<option>' + path + '</option>');
$('#input_Version').append(option);
});
}
function SetVersionedGroup(){
$("#input_baseUrl").val(swashbuckleConfig.rootUrl + "/swagger/docs/" + $("#input_Group").val() + $("#input_Version").val())
}
function unique(list) {
var result = [];
$.each(list, function (i, e) {
if ($.inArray(e, result) == -1) result.push(e);
});
return result;
}})();
编辑:开发工具中也没有错误,元素只是不渲染。我还有另一个 Jquery 脚本,它确实添加了基本身份验证控件,它工作得很好。屏幕:
解决方案
一般来说,您将学习 JS 和 Web 开发的最重要的事情之一是,并非所有浏览器都是最新的。IE因此而臭名昭著。您可以通过使用不同的方法或更常见地使用pollyfill来否定这一点。每当您发现在 chrome 中工作但在 firefox 中没有的问题时,请查看您正在使用的方法并检查它们的支持。
有几个很好的资源可用于检查浏览器兼容性。caniuse.com 或 developer.mozilla.org(我强烈推荐使用 MDN,它是学习 JS 和 Web 开发的绝佳资源)
您还可以在兼容模式下运行 chrome 进行测试(请参阅此处的方法)
说了这么多——你的 jquery 对我没有任何影响,但看起来 Swashbuckle 库中的兼容性可能存在问题。快速的谷歌搜索也显示了 IE11 中 swagger 的很多问题。查看此线程以查看它是否与您所经历的相关。这是关闭的,所以它可能不太正确,但这是我最初的怀疑。
希望这可以帮助!
推荐阅读
- unity3d - Unity 解析 APK 错误 [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: 无法解析 /data/app/vmdl1662909328.tmp/base.apk: AndroidManifest.xml]
- google-chrome-extension - 是否可以在 chrome 扩展中从 JS 中删除 X-Frame-Options 标头?
- angular - Angular - 有没有办法在 ng-template 中投影内容?
- html - 如何向导航栏添加背景图像?
- typo3 - TYPO3 扩展设置到页面设置
- c++ - 如何设置和获取 fipTag 的值
- python - 熊猫在列中找到最大连续下降周数
- java - java可以用小数识别负0吗?
- linux - 如何使用 Ansible 更新远程主机
- django - 如何修复 AttributeError: 'NoneType' 对象没有属性 'id' 和 self.assertEqual(Item.objects.count(), 1) AssertionError: 0 != 1