alert("數(shù)據(jù)加載失敗"),應(yīng)該是ajax請(qǐng)求失敗,問問你的后臺(tái)吧
思路是有的,將字符串轉(zhuǎn)換成字符數(shù)組,再定義一個(gè)字母表的字典,字典的key為替換前的字符char,字典的value為替換后的字符char,給你寫了一個(gè)簡單的實(shí)現(xiàn),運(yùn)行效果如圖:
示例代碼:
static void Main(string[] args)
{
var str = "Try Firefox with the bookmarks, history and passwords from another browser.";
var strArr = str.ToArray();
var result = Converter(strArr);
Console.WriteLine($"初始字符串:{str}");
Console.WriteLine($"替換后的字符串:{string.Join("", result)}");
Console.ReadKey();
}
public static char[] Converter(char[] originalCharArray)
{
var dict = new Dictionary<char, char> {
{ 'a','s'},
{ 'b','t'},
{'c','u'},
{'d','v'},
{'e','w'},
{'f','x'},
{'g','y'},
{'h','z'},
{'i','a'},
{'j','b'},
{'k','c'},
{'l','d'},
{'m','e'},
{'n','f'},
{'o','g'},
{'p','h'},
{'q','i'},
{'r','j'},
{'s','k'},
{'t','l'},
{'u','m'},
{'v','n'},
{'w','o'},
{'x','p'},
{'y','q'},
{'z','r'},
};
var result = new List<char>();
for (int i = 0; i < originalCharArray.Length; i++)
{
var c = originalCharArray[i];
var isUpperCase = Char.IsUpper(c);
if (Char.IsLetter(c))
{
c = dict[Char.ToLower(c)];
if (isUpperCase)
{
c = Char.ToUpper(c);
}
}
result.Add(c);
}
return result.ToArray();
}<div class="scan" @click.stop="show">
<svg class="icon" aria-hidden="true">
<use xlink:href="#icon-xiangji_"></use>
</svg>
</div>
<div id="cam" v-show="flag">
<button @click="back">返回</button>
相機(jī)頁面
</div>
mounted() {
$('#cam').on('click', (event) => event.stopPropagation());
$(document).on('click', () => {
this.back();
});
},
methods: {
show() {
this.flag = true;
},
back(){
this.flag = false;
}
}ok解決了 gradle問題
我對(duì)問題的理解是:vue的history模式如何在iis中發(fā)布
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="index.html">
<error statusCode="404" redirect="index.html" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="500" path="/index.html" responseMode="ExecuteURL" />
<error statusCode="404" path="/index.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>既然你可以拿到iframe的body,那拿到iframe的所有l(wèi)ink沒問題吧,只要把link加到head就行了吧,jquery應(yīng)該有方法可以這樣添加的吧
安全性指什么?禁止外鏈?這個(gè)和websocket有什么關(guān)系?
話說日常刷一刷首頁。這些東西都能看到呀
巧用Token防盜鏈,實(shí)現(xiàn)內(nèi)容私有化
簡單 4 步,帶你深入了解 Token 防盜鏈
之前用的clipboard一個(gè)版本不知道為什么new實(shí)例的時(shí)候回報(bào)錯(cuò),后面換了一個(gè)版本可以了。
這個(gè)插件可以解決大部分瀏覽器的復(fù)制了,這個(gè)東西可能本來就不是完全性的可能還是有些讓用戶去手動(dòng)復(fù)制吧/
@donglegend 你好,謝謝,基本上可以,但是這種方式感覺有缺陷,如下:
//假設(shè)我想在1s中完成動(dòng)畫(滑動(dòng)250px)
//那么我需要函數(shù)執(zhí)行多少次呢?
//很顯然,如果我想動(dòng)畫看上去越順滑,那必須每次移動(dòng)的像素就越小,所以函數(shù)執(zhí)行越頻繁;
//相反,如果函數(shù)間隔時(shí)間越大,動(dòng)畫會(huì)非常難看(一次移動(dòng)的像素太多)
問題:假設(shè)我滑動(dòng)的距離足夠大(1000px),執(zhí)行的時(shí)間足夠短(0.3s),看上去動(dòng)畫要足夠順滑(每次移動(dòng)5px),那么函數(shù)需要多長時(shí)間執(zhí)行一次呢? 。0.3 / (1000 / 5) ,0.3s要執(zhí)行200次函數(shù),每 0.0015s 執(zhí)行一次,這么頻繁的執(zhí)行函數(shù)到底有沒有問題呢?如果每次只能移動(dòng)1px呢?
再者就是這些計(jì)算麻煩,不如css3動(dòng)畫來得方便。
我用css實(shí)現(xiàn)的動(dòng)畫和js鉤子實(shí)現(xiàn)的作比較,都是0.3s,總感覺css的動(dòng)畫要快,要順滑。
<template>
<transition
v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:leave="leave"
>
<slot></slot>
</transition>
</template>
<script>
export default {
name: 'animation',
data() {
return {
enterTimer: null,
leaveTimer: null
}
},
methods: {
beforeEnter: function(el) {
//設(shè)置滑塊的初始位置(滑塊的寬度)
el.style.bottom = '-250px'
},
enter: function(el, done) {
clearInterval(this.leaveTimer)
let _v = 0
//假設(shè)我想在1s中完成動(dòng)畫(滑動(dòng)250px)
//那么我需要函數(shù)執(zhí)行多少次呢?
//很顯然,如果我想動(dòng)畫看上去越順滑,那必須每次移動(dòng)的像素就越小,所以函數(shù)執(zhí)行越頻繁;
//相反,如果函數(shù)間隔時(shí)間越大,動(dòng)畫會(huì)非常難看(一次移動(dòng)的像素太多)
this.enterTimer = setInterval(() => {
if (_v < 250) {
_v += 2.5
} else {
_v = 250
clearInterval(this.enterTimer)
done()
}
el.style.opacity = _v
el.style.transform = `translateY(-${_v}px)`
}, 3)
},
leave: function(el, done) {
clearInterval(this.enterTimer)
let _v = 250
this.leaveTimer = setInterval(() => {
if (_v > 0) {
_v -= 2.5
} else {
_v = 0
clearInterval(this.leaveTimer)
done()
}
el.style.opacity = _v
el.style.transform = `translateY(-${_v}px)`
}, 3)
}
}
}
</script>
之前一直以為官方價(jià)紹了兩種方式是等價(jià)的,并且兩種方式對(duì)應(yīng)的demo不是等效的,感覺這是巨大的一個(gè)坑
router.js
// router用history
const appRouter = {
mode: "history",
routes: [
{
path: "/list",
name: "list",
component: List,
meta: {
keepAlive: true //不刷新
}
}
]
}
App.vue入口文件添加keep-alive
<template>
<div id="app">
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
router.js主要代碼(也可以放到main.js)
import { getScrollTop, setScrollTop } from "@/utils/mixin";
let routerList = [];
router.beforeEach((to, from, next) => {
//返回上一級(jí)瀏覽位置
let position = getScrollTop();
let currentRouterIndex = routerList.findIndex(e => {
return e.path === from.fullPath;
});
if (currentRouterIndex != -1) {
routerList[currentRouterIndex].position = position;
} else {
routerList.push({
path: from.fullPath,
position: position
});
}
});
router.afterEach((to, from, next) => {
let savedPosition = routerList.find(e => {
return e.path === to.fullPath;
});
if (typeof savedPosition !== "undefined") {
Vue.nextTick(() => {
setScrollTop(savedPosition.position);
});
} else {
Vue.nextTick(() => {
setScrollTop(0);
});
}
});
utils/mixin.js
/*獲取到頂部的距離*/
export function getScrollTop() {
return (
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop
);
}
/*設(shè)置距離*/
export function setScrollTop(value) {
window.scrollTo(0, value);
}chartObj.setOption({
title: {
text: '',
position: ''
}
})
1.首先MUI和MINT-UI一樣都是UI框架,或者是組件庫,但是他們本質(zhì)是不一樣的,mui都是基于原生js或者jQuery,而mint-ui是基于vue的
2.mui的打包不需要webpack參與,hbuild應(yīng)該很方便直接用
3.就技術(shù)選型來說,如果需要快速開發(fā),而且沒有用過vue的話建議直接用mui
把2018-05加個(gè)引號(hào)
'<a href="javascript:LoadReasonInfo('+ row.userSkey +',\''+ row.signInMonth +'\',2)"></a>'
或
`<a href="javascript:LoadReasonInfo(${row.userSkey},'${row.signInMonth}',2)"></a>`
不然到網(wǎng)頁上
<a href="javascript:LoadReasonInfo(0,2018-05,2)"></a>
會(huì)把2018-05當(dāng)成數(shù)字公式先計(jì)算
1.為什么結(jié)果是 0,1
兩個(gè)點(diǎn)。
1.var x = y = 1 等價(jià)于 var x; x = y = 1
即跳過了y的聲明,直接創(chuàng)建了全局變量y
2.console.log(x,y)訪問的x,y都是全局變量,答案就很明顯了
2.代碼注釋為什么說“x在函數(shù)內(nèi)部聲明,y不是!”
原因見上個(gè)回答第一點(diǎn)
3.什么樣的算是隱式聲明的全局變量
除去宿主環(huán)境本身的變量,其他所有未經(jīng)var/let/const創(chuàng)建的全局變量都是“隱式聲明的全局變量”
問:為什么a is not defined
還是見第一個(gè)回答的第一條,a是函數(shù)f的局部變量,無法在局部作用域外部訪問
<el-upload
:action="aliOss.host"
:file-list="fileList"
:data="aliOss"
:disabled="disabled"
:multiple="multiple"
:limit="limit"
:before-upload="beforeUpload"
:on-success="handleUploadSuccess"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-exceed="handleExceed"
list-type="picture-card">
<i class="el-icon-plus"></i>
</el-upload>
這是我做的一個(gè)項(xiàng)目中的上傳多個(gè)圖片的組件,不明白你為啥還要一個(gè)按鈕來選取圖片
react的 生命周期中 有一個(gè) shouldComponent Update 你在這個(gè)生命周期函數(shù)中判斷 this.state 中的值 和 前一次的值 不同時(shí) 返回 false 就能夠阻止 react 再次 render
n > 0:
/^[0-9]*[0]+$/
任意 n:
/^[0-9]*[0]{n}$/你需要記住光標(biāo)位置,改變之后,重新設(shè)置光標(biāo)位置
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。