이 기사에서는 안내 및 평가를 위해 일상 생활에서 축적 한 더 실용적인 JS 방법을 공유합니다. 다른 기사에서 소개하고 싶지만 조금 더 추가로 발견되었습니다. 나는 방법을 정리했지만 그 방법을 보여줄 방법은 많지 않습니다. 물론, 그들 중 일부는 내가 매우 실용적이라고 생각하는 온라인에서 본 방법입니다. 모든 사람들이 논의 할 수 있도록 여기에 게시하겠습니다.
1. 이전 페이지가없는 경우 리턴을 클릭 한 다음 지정된 페이지로 이동하십시오.
우선, 고객의 요구 사항에 대한 요구 사항 (WeChat에 공유 된 단일 페이지)을 클릭하여 웹 사이트의 홈페이지로 점프하십시오.
이 기간 동안이 기능은 고객과 논의되었습니다. 홈페이지에 버튼을 추가하여 페이지로 이동할 수 있습니까?
그러나이 방법은 각 페이지에서 작동 할 수 없으며이 기능이 필요한 공유 페이지에 다음 아이콘이 없으며 아름다움에 영향을 미치지 않음을 나타냅니다. 그래서 나는 트립을 찾아야했다. 개는 또한 Edge Ball을 연주하는 기능으로 가득합니다.
그래서 내 자신의 시도를 통해 다음과 같은 코드가 있습니다.
// 한 페이지없이 홈페이지로 돌아가서 기능으로 돌아 가기 Purphistory () {// 브라우저 기록 스택에서 레코드 수를 얻습니다. // 페이지가로드 될 때 현재 페이지가 스택으로 밀려 나기 때문에 (history.length <2) {var State = {index " window.history.pushstate (state, "index", gethttppprefix + "index.html"); state = {제목 : "index", url : ""}; window.history.pushstate (state, "index", ""); }}그런 다음 페이지의 준비된 이벤트에 다음 코드를 추가하십시오.
settimeout (function () {pusphistory () window.addeventListener ( "popstate", function (e) {5 if (wind특정 기능은 이전에 페이지가 있는지 여부를 결정하는 것입니다. 그렇지 않은 경우 웹 사이트의 링크 주소를 상태에 삽입 한 다음 (홈페이지가 여기에 사용됩니다) PopState 이벤트를 듣고 해당 기능 작업을 수행하십시오.
이 코드에는 약간의 문제가있을 수 있으므로 게시 할 계획이며 누군가가 토론하고 개선 할 수 있습니다.
2. 편리한 로깅 방법
나는 모든 사람들이 이미 페이지를 디버깅 할 때 Console.log ()의 약간의 장점 길이에 지쳤다고 생각합니다. 일부 사람들은 바로 가기 입력을 사용하여 빠른 입력 (예 : 입력 CL 컴파일 환경과 같은 콘솔에서 점프)을 만들 수 있습니다. 그러나 프로젝트가 릴리스되면 여전히 지우기가 어려울 것입니다. 그래서 나는 단순히이 상황을 구체적으로 다루는 방법을 썼습니다.
function lll () {// global variable _debug는 디버그 정보 스위치를 제어하는 데 사용됩니다. // 인수는 메소드의 매개 변수 세트입니다. 이것은 매개 변수의 수를 제한하지 않고 (_item in arguments) {// 개인 습관이 줄에 표시되기 때문에 문자열이 필터링되고 (typeof _item == "string") {arr.push (_item)} {console.log (_item)}}에 대한 디버깅을 용이하게합니다. if (arr.length> 0) console.log (arr.join ( ','))}}실제로, 나는 매개 변수의 이름을 자동으로 얻을 수 없다는 것에 약간 불만족합니다. 그렇지 않으면 다음과 같이 사용할 수 있습니다.
var a = 123, b = 333, obj = {이름 : "이름", 내용 : "..."} lll (a, b, obj) // 디버깅 정보는 다음과 같습니다.당신은 더 이해하는 것 같습니까?
3. 브라우저 포지셔닝 정보 얻기 (모바일 터미널 지원)
내가받은 많은 프로젝트는 모바일에 대한 맞춤형 개발이므로 현재 위치가 필요한 정보가 종종 사용됩니다.
그러나 인터넷의 많은 인터페이스는 Baidu의 API, WeChat의 API 등과 같은 외부 JS 섹션을 참조해야합니다.
다음으로 외부 JS에 대한 참조가 필요하지 않은 메소드를 소개 할 것입니다. 그러나 위치를 얻기 위해 외부 API 링크에 매개 변수를 제출하면됩니다.
if (getCookie ( 'position') == "") {if (navigator.useragent.indexof ( "micromessenger")> -1) {// 상황에 따라 wechat 터미널인지 판단, navigator.geolocation.getCurrentPosition.getCurrentPosition.getCurrentPosition.getCurrentPosition.getCurrentPosition.getCurrentPosition.getCurrentPosition.getCurrentPosition. html5 (모바일 터미널은 가장 정확하고 PC는 큰 편차를 가질 것입니다) var lat = position.coords.latitude; // 현재 위도를 가져옵니다. var lng = position.coords.longitude; // 현재 경도 var arr = [] arr.push (lng) arr.push (lat) // alert (position) $. "http://api.map.baidu.com/geocoder/v2/?ak=om55dvwvwluu7shkz7uy8m6e&callback=renderreverse&location=" + lat + "," + lng + "& output = json & pois = 1", // latudite and longitude on the api에 대한 latudents in the api를 통과합니다. beforeSend : function () {//이 프로세스는 시간이 걸리므로 ioSload () // 내가 쓴 페이지로드 프롬프트를 갖는 것이 가장 좋습니다.}, data : {}, dataType : "jsonp", // page loading animation}, dataType : "jsonp", // jsonp jsonpcallback의 형태로 전송해야합니다. 수신기와 송신기가 통합 된 성공을 수행해야합니다. 함수 (data) {ios.hide (); // alert ( "#myPosition"). //alert(error.message);}, {})}이 코드는 실제 프로젝트의 코드입니다. 타겟팅 정보가 얻어 졌는지 여부를 결정해야하므로 페이지를로드 할 때마다 한 번 얻을 수 없으므로 쿠키를 사용하여 타겟팅 정보를 저장했습니다.
처음에는 현재 포지셔닝 정보 쿠키가 있는지 여부를 결정하지만 아니요. 그런 다음 모바일 터미널에 있는지 여부를 결정합니다 (프로젝트가 WeChat 터미널에서 나온 것이기 때문에 여기에서 WeChat 터미널 검증을 수행했습니다).
그런 다음 데이터 전송을 위해 HTML5에서 제공 한 인터페이스 매개 변수를 호출하면 Baidu에서 반환 된 JSONP가 처리됩니다. 내 프로젝트는 위치 도시 정보 만 얻어야하므로 도시를 얻는 예를 제공합니다.
4. 문자열의 숫자 부분을 가져옵니다
프로젝트에서 기능 구현에 대한 책임이 있기 때문에 많은 페이지를 직접 구축하지는 않지만 태그의 값을 얻기 어려운 어려운 상황을 만들 것입니다.
예를 들어:
<div> 998의 원래 가격은 이제 <a> 99.8! </a> </div>입니다
이와 같은 페이지의 경우 때로는 998 또는 98을 가져와야합니다. 조금 번거로울 것입니다.
아래에 제공하는 방법을 통해이 상황을 쉽게 해결할 수 있습니다.
함수 getNum (text) {var value = text.replace (/[^(0-9).]/ig, ""); Parsefloat (값)를 반환합니다. }이 방법은 매우 짧으며 본질적으로 규칙 성을 통해 일치합니다. 비 번호 또는 소수점 인 문자를 빈 줄로 교체하십시오 (실제로 삭제)
이러한 방식으로 반환 된 데이터는 우리가 원하는 숫자입니다. 마침내 데이터의 후 처리를 용이하게하는 부동 소수점 작업으로 변환했습니다. 예를 들어, 소수점 이하 두 자리를 유지하고 둥글게 유지하십시오.
5. 장치 정보를 얻으십시오
//#지역 정보 가져 오기 정보 var 브라우저 = {버전 : function () {var u = navigator.useragent, app = navigator.appversion; return {trident : u.indexof ( 'trident')> -1, // 커널 presto : u.indexof ( 'presto')> -1, // Opera 커널 웹 키트 : u.indexof ( 'Applewebkit')> -1, // Apple 및 Google Kernel Gecko : u.indexof ( 'gecko'). u.indexof ( 'khtml') == -1, // firefox 커널 모바일 : !! U.match (/applewebkit.* mobile.*/), // 모바일 터미널 ios : !! U.match (// (i [^;]+;)? cpu.+mac os x/), // 1). ||. U.Indof ( 'linux')> -1, // Android 터미널 또는 UC 브라우저 iPhone : u.indexof ( 'iPhone')> -1, // iPhone 또는 QQHD 브라우저 iPad : u.indexof ( 'iPad')> -1, // iPad WebApp : u.indexof ( 'safari'). 헤더 및 하단 weixin : u.indexof ( 'micromessenger')> -1, // wechat (2015-01-22에 새로 추가) qq : u.match (// sqq/i) == "qq"// qq} (navigator.browserlanguage) 실제 사용은 다음과 같습니다. if (browser.versions.webkit) {// Apple 및 Google 커널 용으로 실행 된 코드 ...} //#endregrion다음은 인터넷에서 작성하고 본 장치 정보를 판단하는 방법도 있습니다.
나는 개인적으로 그것이 매우 유용하다고 생각하므로 당신과 공유 할 것입니다.
문자열 확장 방법-다음은 문자열 유형 데이터를 추가하는 방법 입니다.
1. 지정된 길이를 넘어 문자열의 일부를 숨 깁니다.
/*지정된 길이로 문자열을 표시하면 초과가 타원 (Len-- 쇼 길이 defaultstr-- 스트링 스트링을 비어있는 경우 String)*/string.splitstring = function (len, defaultstr) {var result = ""; var str = this.tostring () if (str) {str = str.trim () if (str.length> len) {result = str.substring (0, len) + "..."; } else {result = str; }} else {result = defaultstr; } 반환 결과;}의견은 충분히 간단합니다. 이해하지 못하면 메시지를 남길 수 있으며 블로거가 보이면 답장을받습니다.
2. 문자열 길이를 하나씩 빼십시오
// 하나의 길이 string.prototype.dellast = function () {return this.substring (0, this.length -1)}}}어떤 사람들은이 방법이 바지를 벗고 방귀를 벗는 것을 조금 의심한다고 생각할 수도 있지만 실제로이 작업은 종종 실제 프로젝트에서 필요합니다.
긴 하위 문자열을 작성하는 대신 코드를 단순화하는 메소드를 작성해야하며 코드를 코딩 할 때 해당 문자열을 직접 클릭하고 Dellast를 선택하는 것이 매우 편리합니다.
한 문장으로 사용해도 괜찮습니다!
3. 숫자 문자열의 지정된 길이를 완료하십시오
// 숫자 문자열의 고정 길이 string.prototype.addzero = function (n) {var num = this var len = num.toString (). 길이; while (len <n) {num = '0' + num; LEN ++; } return num;}주석을 읽을 때 이해하지 못할 수도 있습니다. 실제로이 문자열을 "2"에 추가하는 것입니다. 이 확장 방법은 이러한 방식으로 사용할 수 있습니다. addzero (2)
그런 다음 반환 된 문자열은 "02"와 같은 문자열입니다.
모두 사용한 후에는 괜찮다고 말했습니다!
4. 데이터베이스 DateTime 유형을 현재까지 변환하십시오
string.prototype.dtd = function () {return new 날짜 (date.parse (this.toString (). 교체 (/-/g, "/"))}5. 사용자 별명이 생략되었습니다
// 사용자 별명은 String.prototype.telhide = function () {var name = this return name.substr (0, 1) + "****" + name.substring (name.length -1, name.length)}위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.