toss.im/_m/7G5566Gq

 

3,000원을 드려요.

초대장으로 가입하면 바로 3천 원을 드려요.

service.toss.im

위 링크를 통해 토스 가입하시면 3천원이 지급됩니다. 바로 인출도 가능하니 꼭 가입하세요 ^^

 

toss.im/_m/xc2qRDyd

 

토스 돈 상자

당첨 확률 100% 상자를 열어보세요.

service.toss.im

돈상자도 열어보세요~!! 

go.kakaobank.io/da7f09d

 

5,000원 혜택담은 카카오뱅크 추천링크

추천링크 눌러 카카오뱅크 첫 계좌 만들면 친구도 나도 5,000원!

www.kakaobank.com

 

위 링크를 통해 카카오뱅크 통장 개설시 5천원이 지급됩니다. 아직 카뱅 계좌가 없으시다면 이참에 개설 한번 해보시죠!!

크롬에는 alert창이 2번 이상 뜰때부터 alert창 "확인"버튼 위쯤에 

"이 페이지가 추가적인 대화를 생성하지 않도록 차단합니다."

라는 문구를 체크 할 수 있고, 그 후에는 더이상 alert창이 뜨질 않는다. 

 

그런데!! 이렇게 안떠버리면 웹 개발자 입장에선 안타까워 진다....

그리고 설정에선, 아무리 살펴봐도 안보이고 .ㅡ.ㅜ

그래서 열심히 검색 결과... 찾아냈다.

 

질문 : 

I accidently checked the "disable alerts from this site" box in Chrome, and now I cannot get any window.alert to work on my localhost.

I have tried resetting the settings in advanced but no luck.

보다시피 나와 같은 증상을 격고 있는 모양이다.

 

답변

Close and re-open the tab. That should do the trick.

 

그렇다.. 그냥 해당 tab을 다시 켜면 해당 설정이 사라진다.

 

[출처] [CHROME] alert(경고창) 차단 해제 하는법|작성자 b1ix

Old question, but found myself asking the same thing. How to intercept res render? Using express 4.0x something now.

You can use/write middleware. The concept was a bit daunting to me at first, but after some reading it made a little more sense. And just for some context for anyone else reading this, the motivation for overriding res.render was to provide global view variables. I want session to be available in all my templates without me having to type it in every res object.

The basic middleware format is.

 

app.use( function( req, res, next ) {
    //....
    next();
} );

The next param and function call are crucial to execution. next is the callback function, to allow multiple middleware to do their thing without blocking. For a better explanation read here

This can then be used to override render logic

 

app.use( function( req, res, next ) {
    // grab reference of render
    var _render = res.render;
    // override logic
    res.render = function( view, options, fn ) {
        // do some custom logic
        _.extend( options, {session: true} );
        // continue with original render
        _render.call( this, view, options, fn );
    }
    next();
} );

카테고리CSS 값예제설명일반링크와 상태선택드래그 앤 드롭크기 조절과 스크롤확대와 축소

auto 사용자 에이전트가 현재 맥락에 맞춰 표시할 커서를 결정. 예를 들어 글씨 위에서는 text를 사용합니다.
default   플랫폼에 따라 다른 기본 커서. 보통 화살표입니다.
none 커서 없음.
context-menu   콘텍스트 메뉴 사용 가능.
help   도움말 사용 가능.
pointer   링크를 나타내는 포인터. 보통 한 쪽을 가리키는 손입니다.
progress   프로그램이 백그라운드에서 작업 중이지만, 사용자가 인터페이스와 상호작용할 수 있음. (wait과 반대)
wait   프로그램이 작업 중이고, 사용자가 인터페이스와 상호작용할 수 없음. (progress와 반대) 간혹 모래시계나 시계모양 그림을 사용합니다.
cell   표의 칸이나 여러 칸을 선택할 수 있음.
crosshair   십자 커서. 종종 비트맵 선택에 사용합니다.
text   글씨 선택 가능. 보통 I빔 모양입니다.
vertical-text   세로쓰기 글씨 선택 가능. 보통 옆으로 누운 I빔 모양입니다.
alias   별칭이나 바로가기를 만드는 중.
copy   복사하는 중.
move   움직이는 중.
no-drop   현재 위치에 놓을 수 없음.
bug 275173: Windows와 Mac OS X에서 no-drop은 not-allowed와 같습니다.
not-allowed   요청한 행동을 수행할 수 없음.
grab   잡을 수 있음. (잡아서 이동)
grabbing   잡고 있음. (잡아서 이동)
all-scroll   모든 방향으로 이동 가능. (패닝)
bug 275174: Windows에서 all-scroll은 move와 같습니다.
col-resize   항목/행의 크기를 좌우로 조절할 수 있음. 종종 좌우 화살표의 가운데를 세로로 분리한 모양을 사용합니다.
row-resize   항목/열의 크기를 상하로 조절할 수 있음. 종종 상하 화살표의 가운데를 가로로 분리한 모양을 사용합니다.
n-resize   움직일 수 있는 모서리. 예를 들어, se-resize 커서는 움직임이 사각형의 동남쪽에서 시작할 때 사용합니다. 어떤 환경에선 동일한 방향의 양방향 화살표를 대신 보여줍니다. 즉 n-resize와 s-resize는 ns-resize와 같습니다.
e-resize  
s-resize  
w-resize  
ne-resize  
nw-resize  
se-resize  
sw-resize  
ew-resize   양방향 크기 조절 커서.
ns-resize  
nesw-resize  
nwse-resize  
zoom-in  

확대/축소할 수 있음.

zoom-out  
const isJson = (str: string) => {
  try {
    const json = JSON.parse(str);
    return json && typeof json === 'object';
  } catch (e) {
    return false;
  }
};

Copy & Paste 시에 텍스트만 가져오도록 처리 onpaste 이벤트에 걸면된다.

const getTextByPasteClipboard = (e) => {
  e.preventDefault();
  let text;
  const clp = (e.originalEvent || e).clipboardData;
  if (clp === undefined || clp === null) {
    // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
    // @ts-ignore
    text = window.clipboardData.getData('text') || '';
    if (text !== '') {
      text = text.replace(/<[^>]*>/g, '');
      if (window.getSelection) {
        const newNode = document.createElement('span');
        newNode.innerHTML = text;
        window.getSelection().getRangeAt(0).insertNode(newNode);
      } else {
        // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
        // @ts-ignore
        document.selection.createRange().pasteHTML(text);
      }
    }
  } else {
    text = clp.getData('text/plain') || '';
    if (text) {
      text = text.replace(/<[^>]*>/g, '');
      document.execCommand('insertText', false, text);
    }
  }
};
const getImageSize = (file: File, callback: (width: number, height: number) => void) => {
  const reader = new FileReader();
  reader.readAsDataURL(file);
  reader.onload = (e) => {
    const image = new Image();
    image.src = e.target.result as string;
    image.onload = function () {
      // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
      // @ts-ignore
      callback(this.width, this.height);
    };
  };
}

 

+ Recent posts