javascript SocialHistory 방문자가 특정 site_javascript 기술을 방문했는지 확인하십시오.
window.onload = function() { var sl = new SocialHistory() Alert(sl.doesVisit("www.jb51.net")) } 사용자가 www.jb51.net을 사용한 적이 있으면 이 함수는 true를 반환하고, 그렇지 않으면 false를 반환합니다. 사실 원리는 복잡하지 않습니다. 링크의 a:visited 의사 클래스 속성을 사용합니다. 먼저 페이지에서 iframe을 생성하고 a 및 a:visited를 이 iframe의 다른 스타일로 설정합니다. 그런 다음 웹사이트 링크를 iframe에 삽입합니다. 브라우저는 사용자의 액세스 기록을 기반으로 방문한 링크에 대해 a:visited 스타일을 설정합니다. 마지막으로 링크의 최종 스타일을 구하게 되면 a:visited인 경우 해당 웹사이트를 방문한 것으로 간주할 수 있습니다. 구체적인 구현 방법은 소스 코드를 참조하세요. 이 스크립트는 주로 사용자가 사용하는 웹사이트를 올바르게 표시할 수 있는 소셜 북마크 아이콘을 표시하는 데 사용됩니다. 하지만 이러한 접근 방식이 사용자의 개인 정보를 도용하는 것으로 의심되는 것은 아닌가 걱정됩니다. 이 방법은 사용자가 특정 웹 사이트를 방문했는지 여부만 확인할 수 있지만 모든 접속 기록을 무제한으로 얻을 수는 없습니다. /* |
* 소셜 제한 - 관심 있는 소셜만. |
* |
* 사이트에서 어떤 소셜 북마크 배지를 표시할지 알 수 있습니다. |
* 방문객. 사용자가 방문한 모든 소셜 사이트를 알려주거나 |
* 특정 항목을 검색하세요. |
* |
* 예: |
* |
* var sl = SocialHistory(); |
* 경고( sl.doesVisit("Digg") ); // true/false를 반환하며, 알 수 없으면 -1을 반환합니다. |
* var listOfVisitedSites = sl.visitedSites(); |
* varcheckedSites = sl.checkedSites(); |
* |
* 확인할 사이트를 더 추가하고 싶다면 사전으로 전달할 수 있습니다 |
* 기록으로: |
* |
* var more = { "Humanized": "http://humanized.com", |
* "Azarask.in": ["http://azarask.in", "http://azarask.in/blog"] |
* }; |
* var sl = SocialHistory(more); |
* alert( sl.doesVisit("Humanized") ); |
* |
* For a list of built-in sites, see the sites variable below. |
* |
* Copyright (c) 2008 Aza Raskin (http://azarask.in/blog) |
* |
* Permission is hereby granted, free of charge, to any person obtaining a copy |
* of this software and associated documentation files (the "Software"), to deal |
* in the Software without restriction, including without limitation the rights |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
* copies of the Software, and to permit persons to whom the Software is |
* furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included in |
* all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
* THE SOFTWARE. |
* |
*/ |
var SocialHistory = function( moreSites ){ |
var sites = { |
"Digg": ["http://digg.com", "http://digg.com/login"], |
"Reddit": ["http://reddit.com", "http://reddit.com/new/", "http://reddit.com/controversial/", "http://reddit.com/top/", "http://reddit.com/r/reddit.com/", "http://reddit.com/r/programming/"], |
"StumbleUpon": ["http://stumbleupon.com"], |
"Yahoo Buzz": ["http://buzz.yahoo.com"], |
"Facebook": ["http://facebook.com/home.php", "http://facebook.com", "https://login.facebook.com/login.php"], |
"Del.icio.us": ["https://secure.del.icio.us/login", "http://del.icio.us/"], |
"MySpace": ["http://www.myspace.com/"], |
"Technorati": ["http://www.technorati.com"], |
"Newsvine": ["https://www.newsvine.com", "https://www.newsvine.com/_tools/user/login"], |
"Songza": ["http://songza.com"], |
"Slashdot": ["http://slashdot.org/"], |
"Ma.gnolia": ["http://ma.gnolia.com/"], |
"Blinklist": ["http://www.blinklist.com"], |
"Furl": ["http://furl.net", "http://furl.net/members/login"], |
"Mister Wong": ["http://www.mister-wong.com"], |
"Current": ["http://current.com", "http://current.com/login.html"], |
"Menaeme": ["http://meneame.net", "http://meneame.net/login.php"], |
"Oknotizie": ["http://oknotizie.alice.it", "http://oknotizie.alice.it/login.html.php"], |
"Diigo": ["http://www.diigo.com/", "https://secure.diigo.com/sign-in"], |
"Funp": ["http://funp.com", "http://funp.com/account/loginpage.php"], |
"Blogmarks": ["http://blogmarks.net"], |
"Yahoo Bookmarks": ["http://bookmarks.yahoo.com"], |
"Xanga": ["http://xanga.com"], |
"Blogger": ["http://blogger.com"], |
"Last.fm": ["http://www.last.fm/", "https://www.last.fm/login/"], |
"N4G": ["http://www.n4g.com"], |
"Faves": ["http://faves.com", "http://faves.com/home", "https://secure.faves.com/signIn"], |
"Simpy": ["http://www.simpy.com", "http://www.simpy.com/login"], |
"Yigg": ["http://www.yigg.de"], |
"Kirtsy": ["http://www.kirtsy.com", "http://www.kirtsy.com/login.php"], |
"Fark": ["http://www.fark.com", "http://cgi.fark.com/cgi/fark/users.pl?self=1"], |
"Mixx": ["https://www.mixx.com/login /dual", "http://www.mixx.com"], |
'Google 북마크': ["http://www.google.com/ 북마크", "http://www.google.com/ig/add?moduleurl=bookmarks.xml&hl=en" ], |
"Subbmitt": ["http://submitt.com/"] |
}; |
( var 사이트 더보기사이트 ) { |
// 해당 사이트가 없으면 URL 목록을 만들어주세요. |
if( 유형(사이트 [사이트] ) == "정의되지 않음" ) 사이트[사이트] = []; |
// 값이 문자열인 경우 해당 값을 URL 목록에 푸시하면 됩니다. |
if( type( moreSites [사이트] ) == "문자열" ) |
사이트[사이트].푸시( 더보기사이트[사이트] ); |
그밖에 |
사이트[사이트] = 사이트[사이트].concat( more사이트 [사이트] ); |
} |
var 방문 = {}; |
함수 getStyle(el,scopeDoc,styleProp) { |
if (el.currentStyle ) |
var y = el.currentStyle[styleProp]; |
else if (창. getCompulatedStyle) |
var y =scopeDoc.defaultView.getCompulatedStyle(el,null).getPropertyValue(styleProp); |
반품y; |
} |
기능 제거( el ) { |
el.parentNode.removeChild( 엘 ); |
} |
// 다음에서 영감을 받은 코드: |
//bindzus.wordpress.com/2007/12/24/adding-dynamic-contents-to-iframes |
함수 createIframe() { |
var iframe = 문서.createElement("iframe"); |
iframe.스타일.위치= "절대"; |
iframe.스타일.가시성 = "숨김"; |
문서.본체.appendChild(iframe); |
// 파이어폭스, 오페라 |
if(iframe.contentDocument) iframe.doc = iframe.contentDocument ; |
// 인터넷 익스플로러 |
else if(iframe. contentWindow) iframe.doc = iframe. contentWindow.문서; |
// Magic: 몸체 강제 생성(IE에서는 기본적으로 null임). |
// 방문/비방문 링크의 스타일도 강제 적용합니다. |
iframe.doc.열기(); |
iframe.doc.쓰기('); |
iframe.doc.쓰기("a{색상: #000000; 디스플레이:없음;}"); |
iframe.doc.쓰기("a:방문함 {색상: #FF0000; 디스플레이:인라인;}"); |
iframe.doc.쓰기(''); |
iframe.doc.닫기(); |
// iframe 반환: iframe.doc에는 iframe이 포함되어 있습니다. |
반환 iframe; |
} |
var iframe = createIframe(); |
기능 embedLinkInIframe( href, 텍스트 ) { |
vara = iframe.doc.createElement("a"); |
a.href = href; |
.innerHTML = 사이트; |
iframe.doc.body.appendChild( ); |
} |
( var 사이트 사이트 ) { |
var URL = 사이트[사이트]; |
for( vari= 0; iurl.length; 나는 ) { |
// IE에서는 iframe 범위 내에서 요소를 생성해야 합니다. |
embedLinkInIframe( url[i], 사이트 ); |
// "www"가 있거나 없는 다양한 URL을 자동으로 시도합니다. |
if( url[i].일치(/www./) ){ |
var sansWWW = url[i].바꾸기(/www./, ""); |
embedLinkInIframe( sansWWW, 사이트 ); |
} 그밖에 { |
// 슬라이스 오프셋의 문자열 1 길이에 대해 2 = 1 |
var httpLen = url[i].indexOf("//") 2; |
var withWWW = url[i].하위 문자열(0, httpLen ) "www." URL[i].하위 문자열( httpLen ); |
embedLinkInIframe( withWWW, 사이트 ); |
} |
} |
} |
var 링크 = iframe.doc.본체.childNodes; |
for( vari= 0; i링크.길이; 나 ) { |
// Firefox/Safari 및 IE를 각각 처리합니다. |
var displayValue = getStyle(링크[i], iframe.doc, "디스플레이"); |
var didVisit = displayValue != "없음"; |
if( 방문 ){ |
방문했습니다[링크[i].innerHTML ] = 참; |
} |
} |
제거( iframe ); |
반품 신규 (기능( ){ |
var 중고 사이트 = []; |
( var 사이트 ){ |
사용된 사이트.푸시(사이트); |
} |
// 방문한 사이트의 배열을 반환합니다. |
이것.visitedSites = 기능 () { |
반품 중고 사이트; |
} |
// true/false를 반환합니다. 사이트를 확인하지 않은 경우 -1을 반환합니다. |
이것.doesVisit = 기능 ( 사이트) { |
if( 유형(사이트 [사이트] ) == "정의되지 않음" ) |
반품 -1; |
반품 유형(방문[ 사이트] ) != "정의되지 않음" ; |
} |
var selectedSites = []; |
( var 사이트 사이트 ){ |
checkedSites.push(사이트); |
} |
// 체크한 사이트 목록을 반환합니다. |
이것.checkedSites = 기능 (){ |
반품 확인된 사이트; |
} |
})(); |
} |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가
