자바 스크립트는 프로토타입 언어라고 한다..(아니 인터프리터 언어 아니었어 -ㅁ-?)

아무튼.. naver api 보다가 이상한게 나와서 분석하다 막히는 중.. 끄응...


[링크 : https://medium.com/@bluesh55/javascript-prototype-이해하기-f8e67c286b67]

[링크 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto]

[링크 : https://msdn.microsoft.com/ko-kr/library/dn342818(v=vs.94).aspx]


'Programming > javascript & HTML' 카테고리의 다른 글

localstorage sessionStorage  (0) 2018.12.18
ajax success 콜백 사용하기  (0) 2018.12.15
canvas dataURL to Formdata(file)  (0) 2018.12.07
js 부모창 변수 접근하기  (0) 2018.12.04
크로스 브라우징 관련..  (0) 2018.11.30
Posted by 구차니

근 두달만에 겨우 해결했네..

키워드를 잘 못 잡았던 걸까 싶긴한데

아무튼.. FileList() 객체로 생성되고 그랬던 거라.. 

File() 객체를 생성하는걸 생각 못한게 2달 날린(?) 원인.. ㅠㅠ



+

new File() 에는 Array가 첫번째 인자인걸 주의!!!!

(망할!!!!!)


var blobdata = document
.getElementById("target_obj_cnv")
.toDataURL("image/png");
blobdata = dataURLtoBlob(blobdata);
var imgFile2 = new File([blobToFile(blobdata, "target.png")], "target.png");
var data = new FormData();

data.append("image", imgFile2);

[링크 : https://stackoverflow.com/questions/27251953/how-to-create-file-object-from-blob[

[링크 : https://developer.mozilla.org/en-US/docs/Web/API/File/File]



+

걍 포기해야 하나? ㅠㅠ

[링크 : https://stackoverflow.com/questions/38449440/javascript-create-file-list-object-from-list-of-files]

[링크 : https://developer.mozilla.org/en-US/docs/Web/API/FileList]


+

으으.. 영 안되네.. ㅠㅠ


function blobToFile(theBlob, fileName) {
var date = new Date();
theBlob.lastModifiedDate = date;
theBlob.lastModified = date.getTime();
theBlob.name = fileName;
return theBlob;
}

function dataURLtoBlob(dataurl) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });

} 

var blobdata = document
.getElementById("cnv")
.toDataURL("image/png");
blobdata = dataURLtoBlob(blobdata);
var imgFile2 = blobToFile(blobdata, "target.png");


[링크 : https://stackoverflow.com/questions/6850276/how-to-convert-dataurl-to-file-object-in-javascript]


+

Vanilla JavaScript


function blobToFile(theBlob, fileName){

    //A Blob() is almost a File() - it's just missing the two properties below which we will add

    theBlob.lastModifiedDate = new Date();

    theBlob.name = fileName;

    return theBlob;

[링크 : https://stackoverflow.com/questions/27159179/how-to-convert-blob-to-file-in-javascript/29390393]



---

[링크 : https://code.i-harness.com/ko-kr/q/4c46fc]


[링크 : https://teamtreehouse.com/community/how-to-create-a-file-from-a-dataurl-javascript]


var dataurl = canvas.toDataURL('image/jpeg',0.8);

var blob = dataURLtoBlob(dataurl);

var fd = new FormData();

fd.append("myFile", blob, "thumb.jpg"); 

[링크 : https://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata]

[링크 : https://stackoverflow.com/questions/15675063/how-to-create-an-image-file-on-server-from-dataurl]

'Programming > javascript & HTML' 카테고리의 다른 글

ajax success 콜백 사용하기  (0) 2018.12.15
js __proto__  (0) 2018.12.14
js 부모창 변수 접근하기  (0) 2018.12.04
크로스 브라우징 관련..  (0) 2018.11.30
wavesurfer.js HTML5 AUDIO 미지원시  (0) 2018.11.30
Posted by 구차니

opener.window.변수명 하니 되는거 같기도 하고?


---


parent.변수명

[링크 : https://stackoverflow.com/.../sharing-global-javascript-variable-of-a-page-with-an-iframe-within-that-page]


되는건줄 알았는데 왜 안되지.. ㅠㅠ


---


팝업이라는 전제가 붙는건 opener 함수가 열어주어야 하기 때문인듯.

아무튼.. 단순하게(?) 전역변수에 접근할순 없고

parent 측에서 opener 변수로 해주어야 하는 것 같기도 하고..


opener.document.[name_tag]....

[링크 : http://algina.tistory.com/50]


document.[name_tag]...

[링크 : http://kamjum.tistory.com/entry/JavaScript-팝업창에서-부모-창의-hidden-변수에-따라-값-설정-위치-변경]


opener / top

[링크 : https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=33683]

[링크 : http://j07051.tistory.com/518]



+

Coding Tip: window.opener.close() will close the source (parent) window.

[링크 : https://www.w3schools.com/jsref/prop_win_opener.asp]


+

현재 윈도우(window)를 오픈한 윈도우의 레퍼런스(reference)를 반환합니다.

[링크 : https://developer.mozilla.org/ko/docs/Web/API/Window/opener]

'Programming > javascript & HTML' 카테고리의 다른 글

js __proto__  (0) 2018.12.14
canvas dataURL to Formdata(file)  (0) 2018.12.07
크로스 브라우징 관련..  (0) 2018.11.30
wavesurfer.js HTML5 AUDIO 미지원시  (0) 2018.11.30
safari 날짜 계산 NaN 문제  (0) 2018.11.30
Posted by 구차니

내가 원하는 수준은.. 구형 브라우저 - 신형 브라우저 수준이 아니라.

신형 브라우저중

chrome 버전별 혹은

모바일 / 데스크탑 버전 정도이긴 한데..

한번 caniuse는 좀 찾아 봐야 겠다.. ㅠㅠ


[링크 : https://caniuse.com/]

[링크 : https://hackya.com/kr/크로스-브라우징-총정리/]

'Programming > javascript & HTML' 카테고리의 다른 글

canvas dataURL to Formdata(file)  (0) 2018.12.07
js 부모창 변수 접근하기  (0) 2018.12.04
wavesurfer.js HTML5 AUDIO 미지원시  (0) 2018.11.30
safari 날짜 계산 NaN 문제  (0) 2018.11.30
모바일 크롬 select-option  (0) 2018.11.30
Posted by 구차니

망할(?) HE-AACv2 땜시 고생중인데...


윈도우에서는 크롬과 edge 중에 edge만 해당 오디오를 정상 지원하고

모바일에서는 아퐁10에서 safari가 정상 지원을 하는 것으로 보인다

(회사 사람들 기종 돌아가면서 해보는데 크롬은 전반적으로 안되고, 사파리도 ios에 따라 다른 듯)


아무튼 fallback 기능으로 backend 엘리먼트를 통해 MediaElement를 설정하여 

재생만이라도 되게 설정할 수 있다.(파형은 안나옴)


[링크 : https://stackoverflow.com/.../wavesurfer-js-getting-it-to-work-in-browsers-other-than-firefox]

[링크 : https://wavesurfer-js.org/example/audio-element/]



+

다시 테스트 해보니..

PC 크롬은 backend로도 재생불가

모바일 크롬은 backend로 파형없이 재생가능

아이폰 크롬도 backend로 파형없이 재생가능

아이폰 safari는 ios 버전에 따라 파형없이 재생가능(아퐁 10은 파형도 나옴)

(망할...)


+

음.. 


[링크 : https://caniuse.com/#search=web%20audio]

'Programming > javascript & HTML' 카테고리의 다른 글

js 부모창 변수 접근하기  (0) 2018.12.04
크로스 브라우징 관련..  (0) 2018.11.30
safari 날짜 계산 NaN 문제  (0) 2018.11.30
모바일 크롬 select-option  (0) 2018.11.30
HTML border style 지정  (0) 2018.11.30
Posted by 구차니

크롬에서만 하다 보니.. 신경을 못 썼는데

크롬은

new Date('2018-11-30 16:30:00') 양식을 인식하는데 반해

safari에서는 인식하지 못해 NaN을 뱉어낸다


그래서 -를 /로 치환해주는 꽁수가 필요한듯..

[링크 : http://gemimi.tistory.com/49]

[링크 : http://tod2.tistory.com/176]



크롬 개발자 도구로 해서 /를 인식하는 것 확인..

그러니 safari에 맞게 /로 해주면 되는 듯...

new Date('2018/02/02 11:11:11')

Fri Feb 02 2018 11:11:11 GMT+0900 (한국 표준시) 



+

[링크 : https://caniuse.com/#search=date]

[링크 : https://html.spec.whatwg.org/multipage/input.html#date-state-(type%3Ddate)]

Posted by 구차니

원인 불명. 해결책은 찾아야 겠지만

모바일에서는 select size를 통해 여러개를 출력하는 녀석을 정상적으로 출력하지 못한다.


PC 크롬



노트2 모바일 크롬




select-option을 여러개 띄우는게 정상적인 사용방법은 아니지만

이렇게 까지 사용불가할 정도가 될 줄이야..

아무튼.. 이걸 우회할 방법을 찾던가.. 다른 태그로 써야 할 것 같네.. ㅠㅠ


+

2013년 당시 알려진 버그였나 본데..

[링크 : https://stackoverflow.com/questions/15760089/select-size-attribute-size-not-working-in-chrome-safari]


+

backend를 설정해주면 waveform은 안나오더라도 재생은 된다고 한다.

wavesurfer.init({

    container: '#waveform',

    waveColor: '#A8DBA8',

    progressColor: '#3B8686',

    backend: 'MediaElement'

}); 

[링크 : https://stackoverflow.com/.../wavesurfer-js-getting-it-to-work-in-browsers-other-than-firefox]

'Programming > javascript & HTML' 카테고리의 다른 글

wavesurfer.js HTML5 AUDIO 미지원시  (0) 2018.11.30
safari 날짜 계산 NaN 문제  (0) 2018.11.30
HTML border style 지정  (0) 2018.11.30
브라우저 닫기, 창 이동시 이벤트  (0) 2018.11.30
javascript 변수 정확도  (0) 2018.11.26
Posted by 구차니

border-style로 점선, 실선 등으로 설정 가능

당연(?) 하지만

top right bottom left 순서로 설정도 가능


[링크 : http://supervitamin.tistory.com/75]

'Programming > javascript & HTML' 카테고리의 다른 글

safari 날짜 계산 NaN 문제  (0) 2018.11.30
모바일 크롬 select-option  (0) 2018.11.30
브라우저 닫기, 창 이동시 이벤트  (0) 2018.11.30
javascript 변수 정확도  (0) 2018.11.26
js object array sort by key  (0) 2018.11.21
Posted by 구차니

jquery에서는 1.8 이후에 deprecated 되었고 3.0 이후에 완전 삭제 된 기능으로

.unload()가 존재하는데, 얘가 좀 직관적인 이름이긴 하다..

[링크 : https://api.jquery.com/unload/]


아무튼 document가 아니라 window에 대해서 before unload 이벤트를 등록하면

창을 이동하거나 닫거나 X 누를때(크롬에서 확인) 이벤트가 발생한다.

$(window).on("beforeunload", function() { 

    return confirm("Do you really want to close?"); 

}) 


[링크 : https://stackoverflow.com/questions/16707249/detect-close-windows-event-by-jquery]

[링크 : https://www.w3schools.com/jquery/event_unload.asp]

[링크 : http://suyou.tistory.com/86]


+

해보니.. 로그인 확인 누를때도 떠서 해제해줄 필요가 있네..

등록은 on() / bind()로 한다면

해제는 off() / unbind()로 한다.

//onBeforeUnload 이벤트 지정

$(window).bind('beforeunload', function()

{

    //페이지 변경이 있었는지 체크..

    var isChanged = ....; 


    //출력할 내용을 Return 해주면 확인 창이 뜨게 됩니다.

    if(isChanged) 

        return '변경된 사항이 있습니다. 페이지에서 나가시겠습니까?';<br>

    //확인 창을 띄우지 않으려면 아무 내용도 Return 하지 마세요!! (Null조차도)

};


//Form Submit 등 onBeforeUnload Event가 발생하길 원하지 않는 경우, 이벤트 해제

$('form').submit(function() 

{

    $(window).unbind('beforeunload'); 

}); 

[링크 : http://nsinc.tistory.com/101]

'Programming > javascript & HTML' 카테고리의 다른 글

모바일 크롬 select-option  (0) 2018.11.30
HTML border style 지정  (0) 2018.11.30
javascript 변수 정확도  (0) 2018.11.26
js object array sort by key  (0) 2018.11.21
wavesurfer.js 그리고 HE-AACv2  (0) 2018.11.21
Posted by 구차니

어쩌면 당연한건데.. 먼가 생소하게만 느껴지는 녀석



The maximum number of decimals is 17, but floating point arithmetic is not always 100% accurate:

Example

var x = 0.2 + 0.1;         // x will be 0.30000000000000004 

[링크 : https://www.w3schools.com/js/js_numbers.asp]

'Programming > javascript & HTML' 카테고리의 다른 글

HTML border style 지정  (0) 2018.11.30
브라우저 닫기, 창 이동시 이벤트  (0) 2018.11.30
js object array sort by key  (0) 2018.11.21
wavesurfer.js 그리고 HE-AACv2  (0) 2018.11.21
requireJS  (0) 2018.11.21
Posted by 구차니