[browser] 북마크릿을 툴바로 드래그 할 때 파비콘 / 아이콘을 설정하는 방법은 무엇입니까?

북마크릿을 만들었고 제대로 작동하지만 Opera 나 Firefox의 툴바에 추가되면 브라우저의 기본 북마크 아이콘 (각각 지구본과 별표)을 사용합니다. 내 사이트에는 파비콘이 있고 창, 탭, 심지어 [사이트] 북마크는 내가 지정한 파비콘을 사용합니다. 내 북마크릿이 아닙니다.

북마크릿이 파비콘도 가져 오도록 내 사이트 또는 북마크릿을 코딩하려면 어떻게해야합니까?

사용자가 사후에 파비콘을 설정하는 데 사용할 수있는 다양한 수동 해커 기술을 알고 있지만 이는 바람직하지 않은 솔루션입니다.



답변

북마크릿은 javascript://스키마를 사용하므로 파비콘을로드 할 수있는 도메인이 없습니다.

따라서 현재 북마크릿에 파비콘을 제공 할 방법이 없습니다. 다음과 같이 생각해보십시오. Javascript 샌드 박스 전체를 기억하십시오. Javascript가 실행중인 웹 페이지의 도메인 외부에있는 어떤 것도 액세스하지 못할 수 있습니다. 현재보고있는 페이지의 모든 도메인에 연결되어야하는 북마크릿은 웹 사이트의 파비콘에도 연결될 수 없습니다.

업데이트 : Hans Schmucker의 답변에 따르면 브라우저가 북마크 메뉴에로드하면 파비콘이있는 HTML 문서를 생성하는 북마크릿을 만들 수 있습니다. 추론은 효과가있는 것처럼 보이지만 아직 이와 같은 행동을 보지 못했고 테스트 결과가 부정적이었습니다.


답변

이를 수행하는 방법은 다음과 같습니다.

  1. 북마크를 북마크 바로 드래그하세요.
  2. 그 옆에 북마크릿에 사용할 파비콘이있는 사이트의 북마크를 만듭니다.
  3. 북마크 관리자를 열고 구성 드롭 다운을 클릭 한 다음 내보내기를 선택하고 북마크를 html 파일로 저장합니다.
  4. 텍스트 편집기에서 해당 html 파일을 엽니 다.
  5. 방금 만든 북마크 를 찾고 Gmail 북마크라고 말하면 다음과 같은 html 코드가 있어야합니다.

<DT><A HREF="http://mail.google.com/mail/u/0/#inbox" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4jdWQzUoCYRiFnxl/0plso0IKX7mqXWCLIlq0qEW4d19Qi6BLCELwEgpvQbyAVrroCrSNUJFGAyrkEEEMNs5PCxtRHGsZneX7nedwzgd/LQngObfnykIQOj9Disd/BFxdZ3hVwtE0Mje3kuw9OJqGWSji1BtzYafeGHk0jTdzCIA8aXANA/O6hFWuzMBWuYJ5XcI1DF6MAY8fxmxAYHdnZK7WMAtFXF3H1XXMQhGrWsN2XR5WM/QGn2MmOBkQOj5CFoJhuTKe5DUzbJvW1jbWZhbqd/4BAIGDfSQhGH7XBehLMlruEGlFzEyTZy6AvL5G+PICWQja6iJaPu8L+zbw9B4MYpyeEB4MkF7782z+AZ1OD0WNkk4vA7AUi/HUav8eYNsOnW6XZCJBJLIwvieTcVQ1SrN5j2XbUwFTf9DpdkmnUlOwJ0VRyGY3UBVl7px/qi+cdYQvZvKCUwAAAABJRU5ErkJggg==">Gmail</A>

  1. 전체 ICON 태그 복사
  2. 동일한 파일에서 생성 한 북마크릿을 찾고 복사 한 ICON 태그를 북마크릿 태그에 삽입합니다 .

<DT><A HREF="javascript:(function(){... bookmarklet JS code...})();" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4jdWQzUoCYRiFnxl/0plso0IKX7mqXWCLIlq0qEW4d19Qi6BLCELwEgpvQbyAVrroCrSNUJFGAyrkEEEMNs5PCxtRHGsZneX7nedwzgd/LQngObfnykIQOj9Disd/BFxdZ3hVwtE0Mje3kuw9OJqGWSji1BtzYafeGHk0jTdzCIA8aXANA/O6hFWuzMBWuYJ5XcI1DF6MAY8fxmxAYHdnZK7WMAtFXF3H1XXMQhGrWsN2XR5WM/QGn2MmOBkQOj5CFoJhuTKe5DUzbJvW1jbWZhbqd/4BAIGDfSQhGH7XBehLMlruEGlFzEyTZy6AvL5G+PICWQja6iJaPu8L+zbw9B4MYpyeEB4MkF7782z+AZ1OD0WNkk4vA7AUi/HUav8eYNsOnW6XZCJBJLIwvieTcVQ1SrN5j2XbUwFTf9DpdkmnUlOwJ0VRyGY3UBVl7px/qi+cdYQvZvKCUwAAAABJRU5ErkJggg==">MyBookmarklet</A>

  1. 이 파일 저장
  2. Chrom 북마크 관리자로 돌아가서 다시 구성을 클릭하고 가져 오기를 선택합니다.
  3. 방금 편집 한 HTML 파일을 가져 오면 북마크릿에 파비콘이 생깁니다 .

기본적으로 절차는 아이콘 속성을 얻는 것입니다 북마크 태그 및 삽입 북마크 태그

여기에 이미지 설명 입력


답변

정답이 아닙니다. 북마크릿에는 도메인이 없지만 위치 (북마크릿 자체)가 있으며 여기에 아이콘을 할당 할 수 있습니다. 그 후에는 브라우저가 아이콘을 저장하는 방법이 중요합니다 (Firefox는 북마크 아이콘을 영구적으로 저장하므로 다른 브라우저에서는 운이 좋지 않을 수 있습니다).

PS Security는 그 안에서 작동하지 않으며 아이콘은 어디에서나 올 수 있습니다. 제한이 없습니다.

참조 http://www.tapper-ware.net/blog/?p=97를


답변

tapper [ware]와 Restafarian 사이트를 읽은 후, 제가 생각해 낼 수있는 가장 간단한 해결책은 다음과 같습니다.

<a href="javascript:

var title = window.location.href;

if (title.indexOf('http://yourwebsite/bookmarklet/') == 0) {
    '<head><link rel=\'shortcut icon\' href=\'favicon.ico\'></head>Bookmarklet';
} else {
    (function(){document.body.appendChild(document.createElement('script')).src='http://yourwebsite/bookmarklet.js';})();
}">Click Me!</a>

Chrome 및 FF에서 잘 작동하지만 FF4는 북마크 바에 아이콘을 저장하는 유일한 브라우저입니다. 다음과 같이 표시됩니다. http://cl.ly/5WNR


답변

여기에 당신이 원하는 것을 거의 할 수있는 좋은 기술이 있습니다.

내 Mac에서 잘 작동하지만 Windows 7⃣에서는 작동하지 못했습니다 .❌

“Emoji”?를 사용하십시오. 그들은 유니 코드 문자로, 화려한 아이콘처럼 보입니다. 미리 정의 된 이미지 목록에서만 선택할 수 있지만 실제로하려는 모든 작업은 북마크릿이 수행하는 작업을 상기시키기 위해 사용자에게 볼 수있는 것을 제공하는 것뿐입니다.

예를 들어 “보안 키”북마크릿을 만들고 있습니다 ?. 그래서 북마크릿 이름에 ?을 사용합니다! ??

따라서 기본적으로 북마크 바에 이미지 ?이 표시됩니다 .?

이 사이트를 사용하여 북마크릿에 적합한 이모티콘을 찾을 수 있습니다. http://emojipedia.org/symbols/


답변

를 기반으로 Wizek의 제안 당신은 데이터 URI에 코드를 넣을 수 있습니다.

data:text/html;charset=utf-8,
<html>
<link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico">
<script type="text/javascript">
    alert('It works!')
</script></html>

그리고 그 모든 것을 북마크로 저장하십시오. (사용 해보세요! 코드를 탭 표시 줄로 드래그하세요)

불행히도 특정 경우에만 작동합니다 (아래 참조).

작동 원리 :

(적어도 Chrome에서는) javascript: "<html>...your html code here, including a javascript tag that will run when loaded...</html>"다른 솔루션이 제안한 형식을 사용하는 북마크릿과 유사합니다 . 이 경우 현재 페이지 의 html이 북마크릿의 html 로 대체 되지만 위치는 동일하게 유지 되고 북마크릿 자체에는 여전히 위치가 없으므로 Chrome에서 파비콘을 저장할 수 없습니다.

반대로 data-uri 북마크 를 사용하면 다른 페이지로 이동하여 자체 위치가 있고 브라우저가 파비콘을 저장할 수 있습니다. 북마크를 동기화하면 다른 컴퓨터에서 액세스 할 수있는 “브라우저에서 웹 사이트 호스팅”이라고 생각하세요. 모든 것을 로컬로 유지하려면 URL 대신 favicon에 base64 이미지를 사용할 수도 있습니다.

한계가 있습니다.

  • 클릭하면 현재 페이지를 떠나 데이터에 페이지를로드합니다 . 따라서 현재 페이지와 상호 작용하는 소책자에는 사용할 수 없으며 다른 페이지에서 실행할 수있는 코드에만 사용할 수 있습니다.

  • 주석에 //를 사용하지 마십시오. 모두 한 줄에 저장되므로 / ** /로 감싸고 세미콜론을 잊지 마세요.

  • FF에서는 파비콘을 저장했지만 window.open ()을 사용하려면 항상 팝업 창을 열도록 설정할 수 없었습니다. 데이터 URL에 대한 기본 동작을 저장할 수 없기 때문입니다.


예로서:

이 기술을 사용하여 작은 Bookmarklet With Icon Generator를 만들었습니다. 이 코드를 URL 표시 줄로 드래그 (또는 북마크로 저장)하여 사용할 수 있습니다. 코드와 아이콘을위한 입력 영역이있는 간단한 페이지로, 아이콘이있는 북마크릿을 생성합니다.

data:text/html;charset=utf-8,<html><head>
    <title>Bookmarklet With Icon Generator</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
    <link rel="shortcut icon" href="https://www.freefavicon.com/freefavicons/objects/plain-thumbs-up-152-237293.png">
</head>
<body>
    <div class="container">
        <div class="page-header">
            <h2>Write your javascript  and specify a favicon, then drag the button to your bookmarks bar</div>
                </h2>
        <a id="bookmarkbutton" href='' ondragend='this.click()' draggable="true" class="btn btn-primary btn-lg" role="button">
            Drag me to your bookmarks bar! </a><br /><br />
        <div>
            <label for="fav_href">Favicon:</label>
            <input id="fav_href" value='https://stackoverflow.com/favicon.ico' style='width:100%'></input> </div><br />
        <div>
            <label for='ta'>Write your JavaScript below</label>
            <textarea id="ta" style="width:100%;height:50%">
setTimeout(()=>{            &%2313
    alert('hello world');   /*Use this format for comments, use %2523 instead of hash (number sign)*/ &%2313
    window.history.back();  &%2313
},200);
            </textarea></div>
  </div>
    <script type = "text/javascript">
        fav_href.onchange = ta.onchange = function(){
            bookmarkbutton.href = 'data:text/html;charset=utf-8,<html><head>'+
                '<link rel="shortcut icon" href="'+ fav_href.value +'">'+
                '<script type="text/javascript"> '+ ta.value +'<\/script>';
            };
        ta.onchange();
    </script>
</body>

또 다른 예 : 자체 작은 창에서 Facebook 메신저를 여는 북마크릿 (브라우저가 기본적으로 팝업을 차단하는 경우 작동하지 않을 수 있음)

data:text/html;charset=utf-8,
<html>
    <link rel="shortcut icon" href="https://facebook.com/images/messengerdotcom/favicon/favicon.ico">
    <script type="text/javascript">
        url = 'https://www.messenger.com/';
        w = 740; h = 700;
        x = parseInt( screen.availWidth/2 - w/2 );
        y = parseInt( screen.availHeight/2 - h/2 );
        nw = window.open(url,'', 'width='+ w +',height='+ h +',top='+ y +',left='+ x);
        nw.focus();
        setTimeout(()=>{
          window.history.back();
          window.close();
        },200);
    </script>

북마크릿 아이콘을 얻기위한 기타 Chrome 해결 방법 :

  • 이 답변 /superuser/212722/how-can-i-add-a-favicon-to-a-bookmarklet-in-에 설명 된대로 북마크 바 내보내기, 편집 및 다시 가져 오기 구글 크롬

  • 북마크릿을 확장 기능으로 전환합니다. 더 이상 북마크릿이 아니지만 동일한 기능을 갖습니다. 다음은 http://sandbox.self.li/bookmarklet-to-extension/ 을 수행하는 간단한 웹 사이트입니다 . 아이콘 파일을 원하는대로 변경하면됩니다. 이것의 단점은 확장 프로그램이 램을 사용한다는 것입니다 (단순한 것의 경우 약 10MB?). 램이 많고 적은 경우 솔루션이 아닐 수도 있습니다. 또한 북마크와 같은 텍스트가 아니라 아이콘 만 표시됩니다.


답변

javascript와 canvas를 사용하여 favicon을 favicon에 할당하고 수정할 수 있습니다 (놀라운 favicon 게임 Defender of the Favicon 참조 ). 게임의 소스 코드는 그렇게하는 데 도움이 될 것입니다 (기본적으로 소스의 554 행에서 볼 수 있듯이 캔버스의 toDataUrl () 함수 사용에 의존합니다).

// set favicon
if( !stupidBrowser && useIcon )
{
     var    icon=$('favicon');
     (newIcon = icon.cloneNode(true)).setAttribute('href',ctx.canvas.toDataURL());
     icon.parentNode.replaceChild(newIcon,icon);
}

이 방법으로 파비콘을 설정하는 소책자를 클릭하거나 저장하면 어떻게됩니까? 잘 모르겠지만 한 번 시도해 보면 좋을 것 같습니다. 브라우저가 그것을 저장할 수 있습니까?