如何将 Internet Explorer 10 支持添加到简单的 VueJs 组件?
How do I add Internet Explorer 10 support to a simple VueJs component?
我正在构建一个简单的 VueJs 组件,它在 IE 10 中根本不呈现。
背景:Vue组件是公司事件的列表,支持基本的过滤和排序。不幸的是,我必须支持IE10。我没有使用 babel,但试图用它来解决这个问题 - 没有效果
我得到的错误是 'city' is undefined
。 IE10 是唯一遇到此问题的浏览器。
Here's a CodePen 只是相关代码。我添加了评论以澄清发生了什么。这里只是 JS(有关完整代码和更好的上下文,请参阅 CodePen):
/* Server rendered data */
var events = [{
path: "events/residuals-biosolids",
name: "Residuals & Biosolids Conference",
sortDate: "1536165900000",
startDate: "4 September 2018",
endDate: "5 October 2018",
displayDate: "September 4 - October 5, 2018",
state: "WI",
city: "Milwaukee",
booth: "342",
featuredImg: "https://cdn2.hubspot.net/hubfs/4299619/event%20thumb.png"
}, {
path: "events/bio-expo",
name: "Biosolid Expo",
sortDate: "1548979200000",
startDate: "6 February 2019",
endDate: "5 March 2019",
displayDate: "February 6 - March 5, 2019",
state: "MN",
city: "Eagan",
booth: "12",
featuredImg: ""
}, {
path: "events/world-ag-expo",
name: "World AG Expo",
sortDate: "1549670400000",
startDate: "7 February 2019",
endDate: "2 February 2019",
displayDate: "February 7 - 2, 2019",
state: "CA",
city: "Tulare",
booth: "3815",
featuredImg: ""
}];
var eventsDesc = [{
path: "world-ag-expo",
name: "World AG Expo",
sortDate: "1549670400000",
startDate: "7 February 2019",
endDate: "2 February 2019",
displayDate: "February 7 - 2, 2019",
state: "CA",
city: "Tulare",
booth: "3815",
featuredImg: ""
}, {
path: "bio-expo",
name: "Biosolid Expo",
sortDate: "1548979200000",
startDate: "6 February 2019",
endDate: "5 March 2019",
displayDate: "February 6 - March 5, 2019",
state: "MN",
city: "Eagan",
booth: "12",
featuredImg: ""
}, {
path: "residuals-biosolids",
name: "Residuals & Biosolids Conference",
sortDate: "1536165900000",
startDate: "4 September 2018",
endDate: "5 October 2018",
displayDate: "September 4 - October 5, 2018",
state: "WI",
city: "Milwaukee",
booth: "342",
featuredImg: "https://cdn2.hubspot.net/hub/4299619/hubfs/event%20thumb.png?width=760&name=event%20thumb.png"
}];
var selectedStates = ["CA", "MN", "WI", ];
var selectedCities = ["Eagan", "Milwaukee", "Tulare", ];
/*
Vue code below
*/
var app = new Vue({
el: "#sg-events-wrapper",
data: {
message: "Hello Vue!",
dateOrder: "ascending",
selectedCity:"none",
selectedState:"none",
/*the data below is pulled from the script tag in the page.*/
eventCities:selectedCities,
eventStates:selectedStates,
eventList: events,
eventListDesc:eventsDesc,
},
computed: {
eventsSorted:function(){
/*chooses which server generated list to use for rendering events*/
if(this.dateOrder=="ascending"){
return this.eventList;
}
else{
return this.eventListDesc;
}
},
},
methods:{
/*handles the visual filtering when someone sets city and or state*/
isInStateAndCity:function(eventsCity,eventsState){
var citiesMatch;
var statesMatch;
if(eventsCity == this.selectedCity || this.selectedCity=="none"){
citiesMatch = true;
}else{
citiesMatch = false;
}
if(eventsState == this.selectedState ||this.selectedState=="none"){
statesMatch = true;
}else{
statesMatch = false;
}
if(citiesMatch && statesMatch){
return true;
}else{
return false;
}
}
}
});
我尝试过的故障排除步骤:
- 使用了 babel,虽然我的代码最初不是那样写的。
- 我使用了 babel-polyfill - 似乎没有效果。
- 我尝试将 body 中 script 标签中的 js 放入主 JS 文件中,以查看在 HTML 中的代码之前由于某种原因加载的 js 文件是否存在问题.没有效果。
我 认为 可能导致此问题的原因:IE10 不喜欢像我所做的那样将 属性 值分配给对象。不确定这一点。这只是一个猜测,我想不出其他方法。
IE 10 控制台错误和 CodePen 渲染失败的屏幕截图,以防它有帮助。
如果您有任何想法但没有办法测试:我可以测试任何更改并发回我看到的记录和控制台,如果它有错误。
我自己发布答案,因为其他人也可能会遇到这个问题,而且那里的信息不多。
有两个问题。我的 selectedCities 和 selectedStates 数组末尾有一个逗号。较新的浏览器不关心这一点,但 <=IE10 会关心。
此外还有一个 VueJS 问题。有人更新了 Vue JS 以使用 IE 10 及以下版本无法理解的新正则表达式字符串。解决方法是使用旧版本的 VueJS 或替换正则表达式。我在何处找到此信息的说明:
https://github.com/vuejs/vue/issues/7946#issuecomment-393713941
我正在构建一个简单的 VueJs 组件,它在 IE 10 中根本不呈现。
背景:Vue组件是公司事件的列表,支持基本的过滤和排序。不幸的是,我必须支持IE10。我没有使用 babel,但试图用它来解决这个问题 - 没有效果
我得到的错误是 'city' is undefined
。 IE10 是唯一遇到此问题的浏览器。
Here's a CodePen 只是相关代码。我添加了评论以澄清发生了什么。这里只是 JS(有关完整代码和更好的上下文,请参阅 CodePen):
/* Server rendered data */
var events = [{
path: "events/residuals-biosolids",
name: "Residuals & Biosolids Conference",
sortDate: "1536165900000",
startDate: "4 September 2018",
endDate: "5 October 2018",
displayDate: "September 4 - October 5, 2018",
state: "WI",
city: "Milwaukee",
booth: "342",
featuredImg: "https://cdn2.hubspot.net/hubfs/4299619/event%20thumb.png"
}, {
path: "events/bio-expo",
name: "Biosolid Expo",
sortDate: "1548979200000",
startDate: "6 February 2019",
endDate: "5 March 2019",
displayDate: "February 6 - March 5, 2019",
state: "MN",
city: "Eagan",
booth: "12",
featuredImg: ""
}, {
path: "events/world-ag-expo",
name: "World AG Expo",
sortDate: "1549670400000",
startDate: "7 February 2019",
endDate: "2 February 2019",
displayDate: "February 7 - 2, 2019",
state: "CA",
city: "Tulare",
booth: "3815",
featuredImg: ""
}];
var eventsDesc = [{
path: "world-ag-expo",
name: "World AG Expo",
sortDate: "1549670400000",
startDate: "7 February 2019",
endDate: "2 February 2019",
displayDate: "February 7 - 2, 2019",
state: "CA",
city: "Tulare",
booth: "3815",
featuredImg: ""
}, {
path: "bio-expo",
name: "Biosolid Expo",
sortDate: "1548979200000",
startDate: "6 February 2019",
endDate: "5 March 2019",
displayDate: "February 6 - March 5, 2019",
state: "MN",
city: "Eagan",
booth: "12",
featuredImg: ""
}, {
path: "residuals-biosolids",
name: "Residuals & Biosolids Conference",
sortDate: "1536165900000",
startDate: "4 September 2018",
endDate: "5 October 2018",
displayDate: "September 4 - October 5, 2018",
state: "WI",
city: "Milwaukee",
booth: "342",
featuredImg: "https://cdn2.hubspot.net/hub/4299619/hubfs/event%20thumb.png?width=760&name=event%20thumb.png"
}];
var selectedStates = ["CA", "MN", "WI", ];
var selectedCities = ["Eagan", "Milwaukee", "Tulare", ];
/*
Vue code below
*/
var app = new Vue({
el: "#sg-events-wrapper",
data: {
message: "Hello Vue!",
dateOrder: "ascending",
selectedCity:"none",
selectedState:"none",
/*the data below is pulled from the script tag in the page.*/
eventCities:selectedCities,
eventStates:selectedStates,
eventList: events,
eventListDesc:eventsDesc,
},
computed: {
eventsSorted:function(){
/*chooses which server generated list to use for rendering events*/
if(this.dateOrder=="ascending"){
return this.eventList;
}
else{
return this.eventListDesc;
}
},
},
methods:{
/*handles the visual filtering when someone sets city and or state*/
isInStateAndCity:function(eventsCity,eventsState){
var citiesMatch;
var statesMatch;
if(eventsCity == this.selectedCity || this.selectedCity=="none"){
citiesMatch = true;
}else{
citiesMatch = false;
}
if(eventsState == this.selectedState ||this.selectedState=="none"){
statesMatch = true;
}else{
statesMatch = false;
}
if(citiesMatch && statesMatch){
return true;
}else{
return false;
}
}
}
});
我尝试过的故障排除步骤:
- 使用了 babel,虽然我的代码最初不是那样写的。
- 我使用了 babel-polyfill - 似乎没有效果。
- 我尝试将 body 中 script 标签中的 js 放入主 JS 文件中,以查看在 HTML 中的代码之前由于某种原因加载的 js 文件是否存在问题.没有效果。
我 认为 可能导致此问题的原因:IE10 不喜欢像我所做的那样将 属性 值分配给对象。不确定这一点。这只是一个猜测,我想不出其他方法。
IE 10 控制台错误和 CodePen 渲染失败的屏幕截图,以防它有帮助。
如果您有任何想法但没有办法测试:我可以测试任何更改并发回我看到的记录和控制台,如果它有错误。
我自己发布答案,因为其他人也可能会遇到这个问题,而且那里的信息不多。
有两个问题。我的 selectedCities 和 selectedStates 数组末尾有一个逗号。较新的浏览器不关心这一点,但 <=IE10 会关心。
此外还有一个 VueJS 问题。有人更新了 Vue JS 以使用 IE 10 及以下版本无法理解的新正则表达式字符串。解决方法是使用旧版本的 VueJS 或替换正则表达式。我在何处找到此信息的说明:
https://github.com/vuejs/vue/issues/7946#issuecomment-393713941