标签: polyfills

垫片和填充物有什么区别?

两者似乎都在Web开发圈中使用,例如参见HTML5 Cross Browser Polyfills,它说:

所以我们在这里收集所有的垫片,后备和填充物......

或者,有es5-shim项目.

在我目前的项目中,我们使用了其中的一些,我想将它们全部放在同一目录中.那么,我该怎么称呼这个目录--- shims,或者polyfills

naming terminology vocabulary shim polyfills

382
推荐指数
6
解决办法
8万
查看次数

HTML5中polyfills的含义是什么?

HTML5中polyfills的含义是什么?我在许多网站上看到过关于HTML5的这个词,例如HTML5-Cross-Browser-Polyfills.

所以我们在这里收集所有垫片,后备和polyfill,以便在本身不支持它们的浏览器中植入HTML5功能.

我其实不明白polyfills是什么意思.

它是一种新的HTML5技术还是JavaScript库?我从来没有在HTML5之前听过这个词.

垫片,后备和填充物之间有什么区别?

javascript html5 fallback shim polyfills

372
推荐指数
4
解决办法
14万
查看次数

如何安装babel-polyfill库?

我刚刚开始使用Babel将我的ES6 javascript代码编译成ES5.当我开始使用Promises时,看起来它不起作用.Babel网站表示支持通过polyfill承诺.

没有运气,我试图添加:

require("babel/polyfill");
Run Code Online (Sandbox Code Playgroud)

要么

import * as p from "babel/polyfill";
Run Code Online (Sandbox Code Playgroud)

有了这个我将在我的应用程序引导上得到以下错误:

找不到模块'babel/polyfill'

我搜索了模块,但似乎我在这里缺少一些基本的东西.我也尝试添加旧的和好的蓝鸟NPM,但看起来它不起作用.

如何使用Babel的polyfills?

javascript node.js polyfills babeljs babel-polyfill

134
推荐指数
6
解决办法
12万
查看次数

IE11中的Angular4应用程序运行问题

我正在使用Angular CLI(1.1.2)构建一个Angular4项目.它在Chrome(版本59.0.3071.115)和firefox(54.0.1)中运行完美,但是当我尝试使用IE11(Verison 11.0.9600.18738)时,nothings出现并且当我在IE中打开开发模式时,它显示以下错误:

SCRIPT5022: Exception thrown and not caught
File: polyfills.bundle.js, Line: 829, Column: 34
Run Code Online (Sandbox Code Playgroud)

详细的错误消息如下:

在此输入图像描述

谁知道如何解决这个问题?

谢谢!

compatibility internet-explorer polyfills angular-cli angular

71
推荐指数
3
解决办法
3万
查看次数

IE11 - CSS变量是否存在polyfill/script?

我正在混合网络浏览器环境(Chrome/IE11)中开发网页.IE11不支持CSS变量,是否存在允许我在IE11中使用CSS变量的polyfill或脚本?

css polyfills internet-explorer-11

63
推荐指数
3
解决办法
4万
查看次数

Shim vs. Sham:有什么区别?

假垫片和假牙有什么区别?

是否足以包含es5-shim.min.js和es6-shim.min.js,还是应该包括es5-sham.min.js和es6-sham.min.js?

javascript ecmascript-5 polyfills ecmascript-6

49
推荐指数
1
解决办法
1万
查看次数

Modernizr with Respond.js

我正在仔细评估利用ModernizrRespond.js进行响应式设计的最佳方式,并为社区提出了几个问题.

首先,我的理解是,在将Modernizr与Respond.js捆绑在一起时,IE8及以下版本的媒体查询支持不需要其他编码或测试.换句话说,当Respond.js与Modernizr捆绑在一起时,我只需要在我的源代码中加载Modernizr以使Respond.js处于活动状态.正确?

其次,您是否认为这是在IE8及以下版本中获得媒体查询支持的最有效方式?从本质上讲,我将包括一个比已经支持媒体查询的浏览器所需的更大的Modernizr脚本.如果对媒体查询的测试失败,分离两个脚本并且只加载Respond.js会不会更有效率?

第三,如果我想分开这两个脚本,你认为如果需要加载Respond.js的最佳方法是什么?一种选择是使用IE特定的条件注释来加载Respond.另一个选择是使用yepnope和Modernizr测试媒体查询支持并在需要时加载Respond.哪个更有效,更具有故障性.

最后,如果我选择分离这两个脚本并使用Modernizr加载Respond,如果需要,我遇到了以下两种技术:

<script>
        yepnope({
    test : Modernizr.mq('(only all)'),
    nope : ['js/libs/respond.min.js']
});
</script>
Run Code Online (Sandbox Code Playgroud)

要么

<script>Modernizr.mq('(min-width:0)') || document.write('<script src="js/libs/respond.min.js"><\/script>')</script>
Run Code Online (Sandbox Code Playgroud)

我发现第二次崩溃IE8,但必须只需要重写.你会推荐哪种技术?

谢谢你的帮助.

javascript html5 css3 modernizr polyfills

45
推荐指数
2
解决办法
3万
查看次数

html5表格与polyfills - 是否值得?

尽管围绕html5形式的所有嗡嗡声,在我看来,在大多数情况下,通过这条路线,你正在创造额外的工作.

举一个例如,一个datepicker字段.本机html5实现在每个浏览器中呈现不同.此外,对于不支持此功能的浏览器,您的polyfilled解决方案(例如jquery UI)也将以不同方式呈现.

现在,当我们使用jquery完美地工作和统一解决方案时,我们已经为同一个表单引入了多个定制和维护点!

我很想听听这个领域的一些真实世界的经历,因为我对所有的嗡嗡声感到恼火!

forms html5 polyfills webshim

42
推荐指数
2
解决办法
2万
查看次数

如何在Angular 8应用程序中支持Internet Explorer?

当我使用Angular CLI(8.0.0)生成项目时,运行ng serve,在Internet Explorer中打开应用程序,然后出现空白屏幕。

我看了看polyfills.ts文件,并取消了以下几行的注释:

    import 'classlist.js';
    import 'web-animations-js';
Run Code Online (Sandbox Code Playgroud)

我也删除了所有core.js导入,因为Angular 8直接支持core.js 3.0。

我也跑了npm i

package.json:

"dependencies": {
    "@angular/animations": "~8.0.0",
    "@angular/common": "~8.0.0",
    "@angular/compiler": "~8.0.0",
    "@angular/core": "~8.0.0",
    "@angular/forms": "~8.0.0",
    "@angular/platform-browser": "~8.0.0",
    "@angular/platform-browser-dynamic": "~8.0.0",
    "@angular/router": "~8.0.0",
    "classlist.js": "^1.1.20150312",
    "rxjs": "~6.4.0",
    "tslib": "^1.9.0",
    "web-animations-js": "^2.3.1",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.800.0",
    "@angular/cli": "~8.0.0",
    "@angular/compiler-cli": "~8.0.0",
    "@angular/language-service": "~8.0.0",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1", …
Run Code Online (Sandbox Code Playgroud)

polyfills angular-cli angular angular8

42
推荐指数
5
解决办法
3万
查看次数

我如何用webpack填充Promise?

我正在使用webpack捆绑我的JavaScript.我依赖于使用任何承诺的冰棒等模块.

这是我的代码:

var popsicle = require('popsicle');
popsicle.get('/').then(function() {
  console.log('loaded URL');
});
Run Code Online (Sandbox Code Playgroud)

这在Promise可用的浏览器中工作正常,但IE 11不提供Promise.所以我想使用es6-promise作为polyfill.

我尝试添加一个明确的ProvidePlugin给我webpack.config.js:

plugins: [
  new webpack.ProvidePlugin({
    'Promise': 'exports?global.Promise!es6-promise'
  })
]
Run Code Online (Sandbox Code Playgroud)

但我仍然在IE 11中得到错误:any-promise browser requires a polyfill or explicit registration e.g: require('any-promise/register/bluebird').

我尝试明确附加全局:

global.Promise = global.Promise || require('es6-promise');
Run Code Online (Sandbox Code Playgroud)

但IE 11给出了一个不同的错误:Object doesn't support this action.

我也尝试过明确注册es6-promise:

require('any-promise/register/es6-promise');
var popsicle = require('popsicle');
Run Code Online (Sandbox Code Playgroud)

这有效,但我必须在每个加载的文件中执行此操作popsicle.我想Promise加入window.

如何window.Promise使用webpack …

javascript polyfills internet-explorer-11 webpack

40
推荐指数
6
解决办法
4万
查看次数