KR102392095B1 - 콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어 - Google Patents

콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어 Download PDF

Info

Publication number
KR102392095B1
KR102392095B1 KR1020207009368A KR20207009368A KR102392095B1 KR 102392095 B1 KR102392095 B1 KR 102392095B1 KR 1020207009368 A KR1020207009368 A KR 1020207009368A KR 20207009368 A KR20207009368 A KR 20207009368A KR 102392095 B1 KR102392095 B1 KR 102392095B1
Authority
KR
South Korea
Prior art keywords
event
interaction
content item
response
touch
Prior art date
Application number
KR1020207009368A
Other languages
English (en)
Other versions
KR20200046092A (ko
Inventor
유지니오 마치오리
커트 로렌스
리차드 언쇼
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20200046092A publication Critical patent/KR20200046092A/ko
Application granted granted Critical
Publication of KR102392095B1 publication Critical patent/KR102392095B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

콘텐츠 아이템들에서 수행된 인터렉션을 검증하기 위한 시스템 및 방법이 제공된다. 콘텐츠 아이템의 코드의 제1 부분에 인코딩된 인터렉션 검증기는 콘텐츠 아이템에 기인한 제1 인터렉션 이벤트를 검출할 수 있다. 인터렉션 검증기는 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별할 수 있다. 애플리케이션이 콘텐츠 아이템에 제2 인터렉션 이벤트를 전달하는 것에 응답하여 함수 호출이 트리거링되도록 구성될 수 있다. 인터렉션 검증기는 제1 인터렉션 이벤트와 함수 호출의 등록 사이의 시간의 양이 미리 결정된 임계치보다 작다는 것을 결정할 수 있다. 인터렉션 검증기는 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 애플리케이션으로 하여금 미리 결정된 액션을 수행하게 할 수 있다.

Description

콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어
관련 출원에 대한 상호 참조
본 출원은 2018년 3월 28일 자로 출원된 미국 특허 출원 제15/938,990호에 대해 우선권을 주장하며, 그 전체가 본 명세서에 참조로서 통합된다.
인터넷과 같은 컴퓨터 네트워크 환경에서, 콘텐츠 제공자는 클라이언트 디바이스에서 실행되는 애플리케이션(예를 들어, 웹브라우저)에 의해 프로세싱되고 렌더링되는 정보 리소스(예를 들어, 웹페이지)에 삽입될 콘텐츠 아이템을 제공할 수 있다. 이러한 콘텐츠 아이템들 및 정보 리소스 클라이언트 디바이스에 연결된 입/출력(I/O) 디바이스를 사용하여 인터렉션될 수 있다.
적어도 하나의 양태는 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 방법에 관한 것이다. 하나 이상의 프로세서들을 갖는 데이터 프로세싱 시스템은 콘텐츠 아이템의 코드의 제1 부분에 인터렉션 검증 스크립트를 삽입할 수 있다. 인터렉션 검증 스크립트는 콘텐츠 아이템에 기인한 제1 인터렉션 이벤트를 검출할 수 있다. 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 상기 스크립트에 전달될 수 있고, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시된다. 인터렉션 검증 스크립트는 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별할 수 있다. 애플리케이션이 콘텐츠 아이템에 제2 인터렉션 이벤트를 전달하는 것에 응답하여 함수 호출이 트리거링될 수 있다. 제2 인터렉션 이벤트는 콘텐츠 아이템에 기인하고, 상기 콘텐츠 아이템과의 인터렉션에 응답하여 생성될 수 있다. 인터렉션 검증 스크립트는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정할 수 있다. 인터렉션 검증 스크립트는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행할 수 있다.
일부 구현예에서, 인터렉션 검증 스크립트는 터치-시작 이벤트 및 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템에 기인한 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출할 수 있다. 제1 온-클릭 이벤트는 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱될 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 제1 온-클릭 이벤트에 후속하여 콘텐츠 아이템에 기인한 제2 온-클릭 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 제2 온-클릭 이벤트는 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱될 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 상기 제2 클릭 이벤트와 상기 제1 클릭 이벤트 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정할 수 있다.
일부 구현예에서, 인터렉션 검증 스크립트는 콘텐츠 아이템에 기인한 터치-종료 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 터치-종료 이벤트는 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱될 수 있다. 터치-종료 이벤트에 대한 터치-종료 이벤트 핸들러는 미리 결정된 액션을 수행하기 위한 함수 호출로 구성될 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 터치-종료 이벤트의 검출에 응답하여, 미리 결정된 액션을 실행하지 않고 미리 결정된 액션을 수행하기 위한 함수 호출을 등록할 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 상기 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템에 기인한 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출할 수 있고, 상기 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱된다.
일부 구현예에서, 인터렉션 검증 스크립트는 상기 제1 인터렉션 이벤트의 검출에 응답하여, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다고 결정할 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 상기 제1 인터렉션 이벤트에 대응하는 제1 유형의 인터렉션을 프로세싱하기 위한 제1 이벤트 핸들러를 통해 상기 콘텐츠 아이템에 기인한 상기 제1 인터렉션 이벤트를 검출할 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트는 상기 제1 유형의 인터렉션 및 상기 제2 인터렉션 이벤트에 대응하는 제2 유형의 인터렉션 중 적어도 하나를 프로세싱하기 위한 제2 이벤트 핸들러를 통해 상기 콘텐츠 아이템에 기인한 상기 제2 인터렉션 이벤트를 검출할 수 있다. 인터렉션 검증 스크립트는 상기 애플리케이션으로 하여금 API(application program interface) 함수 호출을 통해 상기 미리 결정된 액션을 수행하게 할 수 있다.
일부 구현예에서, 데이터 프로세싱 시스템은 상기 미리 결정된 액션을 수행하기 위한 상기 복수의 미리 결정된 이벤트 핸들러들 중 하나와 일치하는 상기 콘텐츠 아이템의 코드의 제2 부분에서 상기 제2 인터렉션 이벤트를 프로세싱하기 위한 이벤트 핸들러를 식별할 수 있다. 상기 이벤트 핸들러는 상기 미리 결정된 함수를 수행하도록 미리 구성될 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트를 삽입하는 것은 상기 이벤트 핸들러를 콘텐츠 아이템의 코드의 제1 부분에서 미리 결정된 복수의 이벤트 핸들러들에 첨부하는 것을 포함할 수 있다. 코드의 제1 부분은 코드의 제2 부분을 실행하기 전에 클라이언트에서 실행되는 애플리케이션에 의해 실행될 수 있다.
적어도 하나의 양태는 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 시스템에 관한 것이다. 시스템은 콘텐츠 아이템의 코드의 제1 부분에 인코딩되고 하나 이상의 프로세서들에서 실행가능한 이벤트 검출기를 포함할 수 있다. 이벤트 검출기는 콘텐츠 아이템에 기인한 제1 인터렉션 이벤트를 검출할 수 있다. 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 상기 스크립트에 전달될 수 있고, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시된다. 시스템은 코드의 제1 부분에 인코딩되고 하나 이상의 프로세서들에서 실행가능한 등록 로그기를 포함할 수 있다. 등록 로그기는 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별할 수 있다. 애플리케이션이 콘텐츠 아이템에 제2 인터렉션 이벤트를 전달하는 것에 응답하여 함수 호출이 트리거링되도록 구성될 수 있다. 제2 인터렉션 이벤트는 콘텐츠 아이템에 기인하고, 상기 콘텐츠 아이템과의 인터렉션에 응답하여 생성될 수 있다. 시스템은 코드의 제1 부분으로 인코딩되고 상기 하나 이상의 프로세서들에서 실행가능한 함수 활성화기를 포함할 수 있다. 함수 활성화기는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정할 수 있다. 함수 활성화기는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행할 수 있다.
일부 구현예에서, 이벤트 검출기는 터치-시작 이벤트 및 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템에 기인한 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출할 수 있다. 일부 구현예에서, 이벤트 검출기는 제1 온-클릭 이벤트에 후속하여 콘텐츠 아이템에 기인한 제2 온-클릭 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 제2 온-클릭 이벤트는 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱될 수 있다. 제2 온-클릭 이벤트에 대한 이벤트 핸들러는 미리 결정된 액션을 수행하기 위한 함수 호출로 구성될 수 있다. 일부 구현예에서, 등록 로그기는 상기 콘텐츠 아이템에 기인한 상기 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별할 수 있다.
일부 구현예에서, 이벤트 검출기는 터치-종료 이벤트에 후속하여 콘텐츠 아이템에 기인한 온-클릭 이벤트를 포함하는 제1 인터렉션 이벤트를 검출할 수 있다. 온-클릭 이벤트는 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱될 수 있다. 일부 구현예에서, 이벤트 검출기는 콘텐츠 아이템에 기인한 터치-종료 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 터치-종료 이벤트는 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱될 수 있다. 터치-종료 이벤트에 대한 터치-종료 이벤트 핸들러는 미리 결정된 액션을 수행하기 위한 함수 호출로 구성될 수 있다. 일부 구현예에서, 등록 로그기는 상기 터치-종료 이벤트 핸들러를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별할 수 있다.
일부 구현예에서, 이벤트 검출기는 상기 제1 인터렉션 이벤트를 복수의 첨부된 인터렉션 이벤트들로부터 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별할 수 있고, 상기 복수의 첨부된 인터렉션 이벤트들은 온-클릭 이벤트 및 터치-종료 이벤트들 중 적어도 하나를 포함한다. 일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트를 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별함에 응답하여, 상기 제1 인터렉션 이벤트를 검출하는 것과 연관된 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정할 수 있다.
일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 선행한다고 결정할 수 있다. 일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 함수 활성화기는 상기 제2 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 할 수 있다.
일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 후속한다고 결정할 수 있다. 일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 후속한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 함수 활성화기는 상기 제1 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 할 수 있다. 일부 구현예에서, 상기 콘텐츠 아이템의 코드의 제1 부분에 인코딩된 상기 이벤트 검출기, 상기 등록 로그기 및 상기 함수 활성화기 중 적어도 하나는 상기 콘텐츠 아이템의 코드의 제2 부분의 실행 전에 상기 애플리케이션에 의해 실행가능할 수 있다.
적어도 하나의 양태는 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 방법에 관한 것이다. 콘텐츠 아이템의 코드의 제1 부분에 인코딩되고 하나 이상의 프로세서들에서 실행되는 인터렉션 검증기는 콘텐츠 아이템에 기인한 제1 인터렉션 이벤트를 검출할 수 있다. 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 상기 스크립트에 전달될 수 있고, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시된다. 인터렉션 검증기는 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별할 수 있다. 애플리케이션이 콘텐츠 아이템에 제2 인터렉션 이벤트를 전달하는 것에 응답하여 함수 호출이 트리거링되도록 구성될 수 있다. 제2 인터렉션 이벤트는 콘텐츠 아이템에 기인하고, 상기 콘텐츠 아이템과의 인터렉션에 응답하여 생성될 수 있다. 인터렉션 검증기는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정할 수 있다. 인터렉션 검증기는 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행할 수 있다.
일부 구현예에서, 제1 인터렉션 이벤트를 검출하는 것은 터치-시작 이벤트 및 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템에 기인한 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하는 것을 포함할 수 있다. 일부 구현예에서, 인터렉션 검증기는 제1 온-클릭 이벤트에 후속하여 콘텐츠 아이템에 기인한 제2 온-클릭 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 제2 온-클릭 이벤트는 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱될 수 있고, 제2 온-클릭 이벤트에 대한 이벤트 핸들러는 미리 결정된 액션을 수행하기 위한 함수 호출로 구성된다. 일부 구현예에서, 상기 함수 호출의 등록을 식별하는 것은 상기 콘텐츠 아이템에 기인한 상기 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하는 것을 포함할 수 있다.
일부 구현예에서, 제1 인터렉션 이벤트를 검출하는 것은 상기 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템에 기인한 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하는 것을 포함할 수 있고, 상기 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱된다. 일부 구현예에서, 인터렉션 검증기는 콘텐츠 아이템에 기인한 터치-종료 이벤트를 포함하는 제2 인터렉션 이벤트를 검출할 수 있다. 터치-종료 이벤트는 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱될 수 있다. 터치-종료 이벤트에 대한 터치-종료 이벤트 핸들러는 미리 결정된 액션을 수행하기 위한 함수 호출로 구성될 수 있다. 일부 구현예에서, 상기 함수 호출의 등록을 식별하는 것은 상기 터치-종료 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하는 것을 포함할 수 있다.
일부 구현예에서, 인터렉션 검증기는 상기 제1 인터렉션 이벤트를 복수의 첨부된 인터렉션 이벤트들로부터 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별할 수 있고, 상기 복수의 첨부된 인터렉션 이벤트들은 온-클릭 이벤트 및 터치-종료 이벤트들 중 적어도 하나를 포함한다. 일부 구현예에서, 상기 미리 결정된 임계치가 상기 시간의 양보다 작다고 결정하는 것은 상기 제1 인터렉션 이벤트를 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별함에 응답하여, 상기 제1 인터렉션 이벤트를 검출하는 것과 연관된 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하는 것을 포함할 수 있다.
일부 구현예에서, 인터렉션 검증기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 선행한다고 결정할 수 있다. 일부 구현예에서, 인터렉션 검증기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션들 수행하게 하는 것은 상기 제2 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하는 것을 포함할 수 있다.
일부 구현예에서, 인터렉션 검증기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 후속한다고 결정할 수 있다. 일부 구현예에서, 인터렉션 검증기는 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 후속한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션들 수행하게 하는 것은 상기 제1 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하는 것을 포함할 수 있다.
이들 및 다른 양태들 및 구현예들은 아래에서 상세히 논의된다. 전술한 정보 및 다음의 상세한 설명은 다양한 양태들 및 구현예들의 예시적 실시예를 포함하고, 청구된 양태들 및 구현예들의 본질 및 특성을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면은 다양한 양태들 및 구현예들의 예시 및 추가 이해를 제공하며, 본 명세서에 통합되어 본 명세서의 일부를 구성한다.
첨부된 도면은 일정한 비율로 도시된 것이 아니다. 다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다. 명확성을 위해 모든 도면에서 모든 컴포넌트가 라벨링된 것은 아니다. 도면에서:
도 1은 예시적 구현예에 따라, 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하기 위한 컴퓨터 네트워크 환경을 도시하는 블록도이다.
도 2는 예시적 구현예에 따라, 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하기 위한 시스템을 도시하는 블록도이다.
도 3a 내지 도 3d는 예시적 구현예에 따라, 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 프로세스를 각각 도시하는 시퀀스 다이어그램들이다.
도 4는 예시적 구현예에 따라, 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 방법을 도시하는 흐름도이다.
도 5a 및 5b는 예시적 구현예에 따라, 콘텐츠 아이템들에서 수행되는 인터렉션을 검증하는 방법의 흐름도이다. 그리고
도 6는 예시적 구현예에 따라, 본 명세서에 기술되고 도시된 시스템 및 방법의 구성요소를 구현하기 위해 사용될 수 있는 컴퓨터 시스템을 위한 일반적인 아키텍처를 도시하는 블록도이다.
아래에 설명되는 것은 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하기 위한 방법, 장치 및 시스템과 관련된 다양한 개념 및 구현예들에 대한 보다 상세한 설명이다. 상기 소개되고 아래에서 더 자세히 논의되는 다양한 개념들은 기술된 개념들이 임의의 특정한 구현 방식에 제한되지 않기 때문에, 임의의 다수의 방식들로 구현될 수 있다.
콘텐츠 아이템은 정보 리소스(예를 들어, 웹페이지)의 콘텐츠 슬롯(예를 들어, 인라인 프레임 엘리먼트)에 삽입될 수 있고, 클라이언트 디바이스에서 실행되는 애플리케이션(예를 들어, 웹브라우저)에 의해 판독될 실행가능한 코드를 포함할 수 있다. 콘텐츠 아이템의 실행가능한 코드는 CSS(Cascading Style Sheets) 및 JavaScript™를 갖는 HTML(Hypertext Markup Language)(예를 들어, HTML5)의 형태일 수 있다. 실행가능한 코드는 애플리케이션을 통해 디바이스에 연결된 입/출력(I/O) 디바이스로부터 전달된 다양한 인터렉션 이벤트들에 응답하기 위해 다양한 이벤트 핸들러(때때로 이벤트 리스너라고도 함)를 포함할 수 있다. 각 이벤트 핸들러는 특정한 유형의 인터렉션 이벤트에 대응할 수 있으며, 인터렉션 이벤트들에 다르게 응답하도록 구성할 수 있다. 특정 이벤트 핸들러들은 대응하는 인터렉션 이벤트에 응답하여 특정한 함수(예를 들어, 다른 정보 리소스로 이동하기 위한 API(application programming interface) 함수)를 트리거링하도록 구성될 수 있다. 다른 이벤트 핸들러들은 각각의 인터렉션 이벤트에 응답하여 임의의 액션도 수행하지 않도록 구성될 수 있다.
서로 다른 콘텐츠 아이템들에 걸쳐 이벤트 핸들러들의 구성이 일치하지 않으면, 각각의 이벤트 핸들러에 대해 구성된 함수 호출의 트리거 타이밍과 같이 행동에 불일치가 발생할 수 있다. 이 문제는 사용자가 I/O 디바이스와의 단일의 물리적 인터렉션에 대한 응답으로 다수의 이벤트 핸들러들이 호출되는 경우에 악화될 수 있다. 예를 들어, 사용자가 모바일 스마트폰의 터치스크린을 한 번 터치하면 터치 시작, 터치-종료, 스크롤 및 온-클릭 이벤트 핸들러들을 호출할 수 있다. 일부 콘텐츠 아이템들은 터치-종료 이벤트 핸들러에 응답하여 함수 호출을 트리거링하도록 구성될 수 있고, 다른 콘텐츠 아이템들은 온-클릭 이벤트 핸들러에 응답하여 함수 호출을 트리거링하도록 구성될 수 있다. 단일의 물리적 인터렉션에 대한 응답으로 모두 호출될 수 있는 이러한 이벤트 핸들러 구성의 변형으로 인해 최종 사용자의 관점에서 원치 않는 또는 의도하지 않은 인터렉션이 발생할 수 있다. 또한, 이러한 인터렉션은 최종 사용자에 의해 예상되는 시간에 비해 함수 호출의 조기 또는 지연된 트리거링을 야기할 수 있다. 이와 같이, 콘텐츠 아이템들의 행동 및 기능의 불일치는 콘텐츠 아이템 및 정보 리소스와의 인간-컴퓨터 인터렉션(HCI)의 품질의 감소를 초래할 수 있다. 또한, 결과적인 함수 호출은 컴퓨터 프로세싱 리소스의 낭비, 과도한 네트워크 대역폭 소비 및 불필요한 전력 사용으로 이어질 수 있다. 최종 사용자가 인터렉션 전에 정보 리소스의 이전 상태를 정정하고 검색하기 위해 클라이언트 디바이스에서 단계를 취하는 경우, 부주의한 함수 호출의 이러한 유해한 효과가 악화될 수 있다.
콘텐츠 아이템의 예상되는 행동으로부터의 발산을 해결하기 위한 기존의 접근법은 콘텐츠 아이템의 다른 기능들을 저하시키거나 파괴할 수 있다. 하나의 종래 기술은 콘텐츠 아이템의 이벤트 핸들러로부터 트리거링될 수 있는 함수 호출들의 세트를 제한하는 것일 수 있다. 이 접근법에서, 콘텐츠 아이템의 이벤트 핸들러로부터의 각 함수 호출은 함수 호출이 허용된 파라미터들을 갖는 특정 컨텍스트들에서 사용되는지를 검증하기 위해 확인될 수 있다. 그러나 이러한 방식으로 함수 호출을 확인하는 것은 어려울 수 있으며, 콘텐츠 아이템의 다른 기능들에 상당한 지연을 초래할 수 있다. 종래의 다른 기법은 원래 프로그래밍된 이벤트 핸들러들을 새 이벤트 핸들러들로 교체하는 것이다. 이 접근법으로, 새로운 이벤트 핸들러는 대응하는 인터렉션 이벤트의 검출에 응답하여 특정된 함수 호출을 트리거링하도록 구성될 수 있다. 그러나, 원래 프로그래밍된 이벤트 핸들러를 대체하면 오류가 발생하기 쉽고, 특히 원래 프로그래밍된 이벤트 핸들러로 호출되었을 함수 호출이 고려되지 않은 경우 예기치 않은 결과가 발생할 수 있다.
이들 및 다른 기술적 과제를 해결하기 위해, 정보 리소스 상에 제공될 각각의 콘텐츠 아이템은 콘텐츠 아이템의 이벤트 핸들러로부터의 함수 호출의 예기치 않은 트리거링을 방지하기 위해 인터렉션 검증 스크립트를 포함하도록 수정될 수 있다. 인터렉션 검증 스크립트는 콘텐츠 아이템에 대한 실행가능한 코드의 상부에 삽입될 수 있고, 애플리케이션은 이벤트 핸들러와 같은 후속 실행가능한 코드 이전에 스크립트를 실행한다. 클라이언트 디바이스에서 애플리케이션에 의해 실행되면, 인터렉션 검증 스크립트는 애플리케이션이 지정된 이벤트 핸들러에 대한 인터렉션 이벤트의 검출 및 특정된 함수의 등록을 대기하게 할 수 있다. 인터렉션 검증 스크립트는 애플리케이션으로 하여금 검출 및 등록 타이밍에 기초하여 특정된 함수의 트리거링을 수정하게 할 수 있다. 인터렉션 검증 스크립트는 애플리케이션으로 하여금 지정된 이벤트 핸들러에 대한 콘텐츠에 기인한 인터렉션 이벤트를 검출하게 할 수 있다. 이벤트 핸들러는 특정된 함수로 구성될 수 있다. 이벤트 핸들러는 특정된 함수없이 구성될 수 있으며, 미리 지정된 이벤트 핸들러의 세트 중 하나일 수 있다. 인터렉션 이벤트의 검출은 함수의 등록 이전 또는 이후에 발생할 수 있다.
지정된 이벤트 핸들러에 대한 콘텐츠 아이템에 기인한 인터렉션 이벤트가 먼저 발생하면, 인터렉션 검증 스크립트는 애플리케이션으로 하여금 미리 결정된 시간 제한 동안 특정한 함수의 등록을 대기하게 할 수 있다. 미리 결정된 시간 제한 내에 함수 호출 등록이 발생하지 않으면, 인터렉션 검증 스크립트는 애플리케이션으로 하여금 검출된 이벤트를 무시하게 할 수 있다. 한편, 함수의 등록이 미리 결정된 시간 제한 내에 발생하면, 인터렉션 검증 스크립트는 애플리케이션으로 하여금 등록된 함수가 수행되고 실행되게 할 수 있다. 반대로, 지정된 이벤트 핸들러에 대한 인터렉션 이벤트가 특정된 함수의 등록 후에 발생하는 경우, 인터렉션 검증 스크립트는 애플리케이션으로 하여금 검출 및 등록이 미리 결정된 시간 제한 내에 발생했는지 여부를 결정하게 할 수 있다. 검출 및 등록이 미리 결정된 시간 제한 내에 발생하는 것으로 결정되면, 인터렉션 검증 스크립트는 등록된 함수가 수행되고 실행되게 할 수 있다. 한편, 검출 및 등록이 미리 결정된 시간 제한을 벗어나 발생하는 것으로 결정되면, 인터렉션 검증 스크립트는 애플리케이션으로 하여금 인터렉션 이벤트의 검출을 무시하고 등록된 함수의 실행을 방지하게 할 수 있다. 이러한 방식으로, 콘텐츠 아이템은 상이하게 행동할 수 있고, 사용자의 예상과는 다른 응답의 조기 또는 지연된 트리거링이 방지될 수 있어서, 콘텐츠 아이템과 기본 정보 리소스과의 인터렉션의 품질을 증가시킨다.
이제 도 1을 참조하면, 도 1은 콘텐츠 아이템들에서 수행된 인터렉션을 검증하기 위한 컴퓨터 네트워크 환경(100)의 일 구현예를 도시하는 블록도이다. 환경(100)은 적어도 하나의 데이터 프로세싱 시스템(110)을 포함한다. 하나의 데이터 프로세싱 시스템(110)만이 도시되어 있지만, 많은 구현예에서, 데이터 프로세싱 시스템(110)은 팜, 클라우드, 클러스터 또는 다수의 데이터 프로세싱 시스템 또는 컴퓨팅 디바이스의 다른 그룹일 수 있다. 데이터 프로세싱 시스템(110)은 때때로 프로세싱 회로로 지칭되는 적어도 하나의 프로세서 및 메모리를 포함할 수 있으며, 이들 각각은 도 6과 관련하여 아래에서 더 상세히 논의된다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 프로세서 실행가능 명령어들을 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되지 않는다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM(electrically-erasable ROM), EPROM(erasable-programmable ROM), 플래시 메모리, 광학 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함할 수 있다. 명령어들은 임의의 적절한 컴퓨터 프로그래밍 언어의 코드가 포함될 수 있다.
네트워크(105)는 인터넷, 로컬, 와이드, 메트로 또는 다른 영역 네트워크, 인트라넷, 위성 네트워크, 음성 또는 데이터 모바일폰 통신 네트워크와 같은 다른 컴퓨터 네트워크들 및 이들의 조합과 같은 컴퓨터 네트워크를 포함할 수 있다. 시스템(100)의 데이터 프로세싱 시스템(110)은 예를 들어 적어도 하나의 콘텐츠 제공자(115), 적어도 하나의 콘텐츠 퍼블리셔(120) 또는 적어도 하나의 클라이언트 디바이스(125)와 네트워크(105)를 통해 통신할 수 있다. 네트워크(105)는 클라이언트 디바이스(125), 데이터 프로세싱 시스템(110) 및 특히 콘텐츠 제공자(115) 또는 콘텐츠 퍼블리셔(120)와 같은 하나 이상의 콘텐츠 소스들 간의 정보를 중계하는 임의의 형태의 컴퓨터 네트워크일 수 있다. 예를 들어, 네트워크(105)는 근거리 통신망(LAN), 광역 통신망(WAN), 셀룰러 네트워크, 위성 네트워크 또는 다른 유형의 데이터 네트워크와 같은 인터넷 및 / 또는 다른 유형의 데이터 네트워크를 포함할 수 있다. 네트워크(105)는 또한 네트워크(105) 내에서 데이터를 수신 및/또는 전송하도록 구성된 임의의 수의 컴퓨팅 디바이스(예를 들어, 컴퓨터, 서버, 라우터, 네트워크 스위치 등)를 포함할 수 있다. 네트워크(105)는 임의의 수의 고정 배선 및/또는 무선 연결을 더 포함할 수 있다. 클라이언트 디바이스(125)는(예를 들어, 광섬유 케이블, CAT5 케이블 등을 통해) 배선된 송수신기와 무선으로(예를 들어, WiFi, 셀룰러, 라디오 등을 통해) 네트워크(105) 내 다른 컴퓨팅 디바이스들과 통신할 수 있다.
콘텐츠 제공자(115)는 클라이언트 디바이스(125)에서 정보 리소스에 디스플레이하기 위한 콘텐츠 아이템들(155)을 제공하기 위해 콘텐츠 제공자 엔터티에 의해 동작되는 서버 또는 다른 컴퓨팅 디바이스들을 포함할 수 있다. 콘텐츠 제공자(115)에 의해 제공되는 콘텐츠는 임의의 편리한 형태를 취할 수 있다. 예를 들어, 서드 파티 콘텐츠는 다른 디스플레이된 콘텐츠와 관련된 콘텐츠를 포함할 수 있으며, 예를 들어, 디스플레이된 콘텐츠와 관련된 웹사이트의 페이지들일 수 있다. 콘텐츠는 콘텐츠 퍼블리셔(120)에 의해 제공되는 주요 콘텐츠를 포함하는 정보 리소스(150)와 같은 정보 리소스 상에 디스플레이하기 위한 서드 파티 콘텐츠 아이템 또는 창작물(예를 들어, 광고)을 포함할 수 있다. 콘텐츠 아이템들(155)은 검색 결과 웹페이지에도 디스플레이될 수 있다. 예를 들어, 콘텐츠 제공자(115)는 웹페이지의 주요 콘텐츠가 그 회사에 의해 제공되는 회사의 웹페이지와 같은 정보 리소스(150)의 콘텐츠 슬롯들(인라인 프레임 엘리먼트들)에 디스플레이하기 위한 또는 검색 엔진에 의해 제공된 검색 결과들 랜딩 페이지에 디스플레이하기 위한 콘텐츠 아이템들(155)의 소스를 제공하거나 그 소스일 수 있다. 콘텐츠 제공자(115)와 연관된 콘텐츠 아이템들(155)은 스마트폰 또는 다른 클라이언트 디바이스(125)에서 어플리케이션 실행의 일부로서 디스플레이된 콘텐츠와 같이 웹페이지들이 아닌 정보 리소스들에 디스플레이될 수 있다.
콘텐츠 제공자(120)는 네트워크(105)를 통해 디스플레이하기 위한 주요 콘텐츠를 포함하는 정보 리소스(150)를 제공하기 위해 콘텐츠 퍼블리싱 엔터티에 의해 동작되는 서버들 또는 다른 컴퓨팅 디바이스들을 포함할 수 있다. 예를 들어, 콘텐츠 퍼블리셔(120)는 정보 리소스(150)에 디스플레이하기 위한 주요 콘텐츠를 제공하는 웹페이지 운영자를 포함할 수 있다. 정보 리소스(150)는 콘텐츠 퍼블리셔(120)에 의해 제공되는 것과 다른 콘텐츠를 포함할 수 있고, 정보 리소스(150)는 콘텐츠 제공자(115)로부터의 콘텐츠 아이템들(155)의 디스플레이를 위해 구성된 콘텐츠 슬롯들을 포함할 수 있다. 예를 들어, 콘텐츠 퍼블리셔(120)는 회사의 웹사이트를 운영할 수 있고, 웹사이트의 웹페이지에 디스플레이하기 위해 그 회사에 관한 콘텐츠를 제공할 수 있다. 웹페이지들은 콘텐츠 제공자(120) 또는 콘텐츠 퍼블리셔(120) 그 자신에 의해 제공된 콘텐츠 아이템들(155)의 디스플레이를 위해 구성된 콘텐츠 슬롯들을 포함할 수 있다. 일부 구현예에서, 콘텐츠 퍼블리셔(120)는 검색 엔진 웹사이트를 운영하는 검색 엔진 운영자의 검색 엔진 컴퓨팅 디바이스(예를 들어, 서버)를 포함한다. 검색 엔진 웹페이지의 주요 콘텐츠(예를 들어, 결과 또는 랜딩 웹페이지)는 검색 결과뿐만 아니라 콘텐츠 제공자(115)로부터의 콘텐츠 아이템들(155)과 같은 정보 리소스(150)의 콘텐츠 슬롯들에 디스플레이된 서드 파티 콘텐츠 아이템들(155)을 포함할 수 있다. 일부 구현예에서, 콘텐츠 퍼블리셔(120)는 비디오 콘텐츠를 제공하기 위한 하나 이상의 서버들을 포함할 수 있다.
클라이언트 디바이스(125)는 콘텐츠 퍼블리셔(120)에 의해 제공된 콘텐츠(예를 들어, 정보 리소스(150)) 및 콘텐츠 제공자(115)에 의해 제공된 콘텐츠(예를 들어, 정보 리소스(150)의 콘텐츠 슬롯에 디스플레이하기 위한 콘텐츠 아이템(155))와 같은 데이터를 디스플레이하기 위해 네트워크(105)를 통해 통신하도록 구성된 컴퓨팅 디바이스들을 포함할 수 있다. 클라이언트 디바이스(125), 콘텐츠 제공자(115) 및 콘텐츠 퍼블리셔(120)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 개인 휴대 정보 단말기, 모바일 디바이스, 컨슈머 컴퓨팅 디바이스, 서버, 클라이언트, 디지털 비디오 레코더, 텔레비전용 셋톱 박스, 비디오 게임 콘솔 또는 네트워크(105)를 통해 통신하도록 구성된 임의의 기타 컴퓨팅 디바이스일 수 있다. 클라이언트 디바이스(125)는 최종 사용자가 콘텐츠를 수신하기 위한 요청을 제출할 수 있는 통신 디바이스들일 수 있다. 요청은 검색 엔진에 대한 요청일 수 있으며, 요청에는 검색 쿼리가 포함될 수 있다. 일부 구현예에서, 요청은 웹페이지에 대한 액세스 요청을 포함할 수 있다.
콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)는 프로세싱 회로의 일부로서 프로세서 및 메모리를 포함할 수 있다. 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 하는 기계 명령어들을 저장한다. 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 등, 또는 이들의 조합을 포함할 수 있다. 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공할 수 있는 임의의 다른 저장 또는 전송 디바이스를 포함할 수 있지만, 이에 한정되지 않는다. 메모리는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리 칩, ASIC, FPGA, ROM, RAM, EEPROM(electrically-erasable ROM), EPROM(erasable-programmable ROM), 플래시 메모리, 광학 매체, 또는 프로세서가 명령어들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함할 수 있다. 명령어들은 임의의 적절한 컴퓨터 프로그래밍 언어의 코드가 포함될 수 있다.
콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)는 각각 하나 이상의 사용자 인터페이스 디바이스들을 포함할 수 있다. 일반적으로, 사용자 인터페이스 디바이스는 감각 정보(예를 들어, 디스플레이상의 시각화, 하나 이상의 사운드 등)를 생성함으로써 사용자에게 데이터를 전달하고 및/또는 사용자로부터 수신된 감각 정보를 전자 신호(예를 들어, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크로폰 등)로 변환하는 임의의 전자 디바이스를 지칭한다. 다양한 구현예들에 따라, 하나 이상의 사용자 인터페이스 디바이스들은 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)의 하우징 내부(예를 들어, 내장 디스플레이, 마이크로폰 등) 또는 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)의 하우징 외부(예를 들어, 클라이언트 디바이스(115)에 연결된 모니터, 클라이언트 디바이스(115)에 연결된 스피커 등)에 있을 수 있다. 예를 들어, 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)는 하나 이상의 콘텐츠 소스들 및/또는 네트워크(105)를 통해 데이터 프로세싱 시스템(110)으로부터 수신된 웹페이지 데이터를 사용하여 웹페이지를 시각적으로 디스플레이하는 전자 디스플레이를 포함할 수 있다. 일부 구현예에서, 콘텐츠 배치 캠페인 관리자 또는 서드 파티 콘텐츠 제공자는 콘텐츠 제공자는 콘텐츠 제공자(115)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 일부 구현예에서, 콘텐츠 제공자는 콘텐츠 제공자(115)의 사용자 인터페이스 디바이스들에 디스플레이된 사용자 인터페이스를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다.
클라이언트 디바이스(125)는 애플리케이션(145)을 실행할 수 있다. 애플리케이션(145)은 예를 들어 인터넷 브라우저, 모바일 애플리케이션, 또는 클라이언트 디바이스(125)에 의해 프로세싱된 컴퓨터 실행가능 명령어, 예컨대 정보 리소스(150) 및 콘텐츠 아이템(155)에 포함된 컴퓨터 실행가능 명령어를 실행 또는 호출할 수 있는 임의의 다른 컴퓨터 프로그램을 포함할 수 있다. 그에 포함된 정보 리소스(150)는 스크립트, 로직, 마크업 또는 명령어(HTML(HyperText Markup Language), XHTML(Extensible HyperText Markup Language), XML(Extensible Markup Language), CSS(Cascading Style Sheets) 및 JavaScript 또는 이들의 조합)에 대응할 수 있다. 정보 리소스(150)는 헤더(162) 및 바디(164)를 포함할 수 있다. 콘텐츠 아이템(146)은 정보 리소스(150)에 삽입될 수 있다.
정보 리소스(150) 중 하나를 페치하기 위해, 클라이언트 디바이스(125)의 애플리케이션(145)은 리소스에 대한 요청을 콘텐츠 퍼블리셔(120)에 송신할 수 있다. 요청은 다른 데이터 중에서도 특히, 정보 리소스(150)에 대한 주소, 디바이스 식별자, 디바이스 유형 및 애플리케이션 프로필을 포함할 수 있다. 주소는 URL(Universal Resource Locator)일 수 있으며, 다른 파라미터들 중에서도 특히, 프로토콜, 호스트 이름 및 파일 경로명을 포함할 수 있다. 호스트 이름은 콘텐츠 퍼블리셔(120)에 대응할 수 있다. 파일 경로명은 콘텐츠 퍼블리셔(120)에 의해 호스팅되는 정보 리소스(150) 중 하나에 대응할 수 있다. 디바이스 식별자는 클라이언트 디바이스(125)에 대응할 수 있다. 디바이스 유형은 클라이언트 디바이스(125)의 시스템 구성에 대응할 수 있다. 애플리케이션 프로필은 정보 리소스(150)를 실행하기 위해 어느 애플리케이션(예를 들어, 웹 브라우저 유형 및 버전 등)이 클라이언트 디바이스(125)상에서 실행 중인지를 표시할 수 있다. 요청이 송신되면, 네트워크(105)는 요청을 호스트 이름에서 식별된 콘텐츠 퍼블리셔(120)에 포워딩할 수 있다.
이어서, 콘텐츠 퍼블리셔(120)는 애플리케이션(145)으로부터 요청을 수신할 수 있다. 차례로, 콘텐츠 퍼블리셔(120)는 클라이언트 디바이스(125)에 제공하기 위해 정보 리소스(150)를 식별하기 위한 요청을 파싱할 수 있다. 일부 구현예에서, 콘텐츠 퍼블리셔(120)는 정보 리소스(150)를 검색하기 위해 데이터베이스에 액세스할 수 있다. 데이터베이스는 콘텐츠 퍼블리셔(120)와 통신하거나 콘텐츠 퍼블리셔(120)에 의해 액세스가능한 콘텐츠 퍼블리셔(120)의 일부일 수 있다. 콘텐츠 퍼블리셔(120)는 요청에 포함된 호스트 이름 및 파일 경로명에 기초하여 제공할 정보 리소스(150)를 식별할 수 있다. 정보 리소스(150)를 식별하면, 콘텐츠 퍼블리셔(120)는 정보 리소스(150)를 클라이언트 디바이스(125)의 애플리케이션(145)으로 송신 또는 전송할 수 있다. 일부 구현예에서, 정보 리소스(150)는 콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)에 의해 제공된 콘텐츠 아이템(155)을 삽입하기 위한 하나 이상의 콘텐츠 슬롯들을 가질 수 있다. 일부 구현예에서, 정보 리소스(150)는 콘텐츠 퍼블리셔(120)로부터의 콘텐츠 아이템들(155)을 갖는 하나 이상의 콘텐츠 슬롯들을 가질 수 있다. 일부 구현예에서, 콘텐츠 아이템들(155)은 클라이언트 디바이스(125)상에서 실행되는 애플리케이션(145)에 미리 삽입되거나 정보 리소스(150)를 제공받을 수 있다.
정보 리소스(150)를 프로세싱하기 위해, 애플리케이션(145)은 문서 트리 생성기, 렌더링 트리 생성기 및 디스플레이 모듈과 같은 임의의 수의 컴포넌트를 포함할 수 있다. 정보 리소스(150)를 판독할 때, 문서 트리 생성기는 정보 리소스(150)를 파싱하여 계층적으로 배열된 정보 리소스(150)의 문서 객체 모델(DOM) 트리를 생성할 수 있다. 렌더링 트리 생성기는 DOM 트리를 사용하여 정보 리소스의 콘텐츠 아이템의 시각적 속성 또는 특성을 지정하는 렌더링 트리를 생성할 수 있다. 디스플레이 모듈은 렌더링 트리에 기초하여 정보 리소스를 렌더링하고, 클라이언트 디바이스(125)의 디스플레이 상에 디스플레이할 수 있다. 애플리케이션(145)은 정보 리소스(150)의 CSS 및 JavaScript를 파싱할 수 있다.
정보 리소스(150)가 프로세싱되는 동안, 애플리케이션(145)은 정보 리소스(150)의 콘텐츠 슬롯을 파싱할 수 있다. 콘텐츠 슬롯은 콘텐츠 아이템(155)에 대응하는 주소를 포함할 수 있다. 주소는 URL(Universal Resource Locator)일 수 있으며, 다른 파라미터들 중에서도 특히, 프로토콜, 호스트 이름 및 파일 경로 이름을 포함할 수 있다. 호스트 이름은 콘텐츠 제공자(115)(예를 들어, 제1 파티 콘텐츠의 경우), 콘텐츠 퍼블리셔(120)(예를 들어, 서드 파티 콘텐츠의 경우) 또는 데이터 프로세싱 시스템(110)에 대응할 수 있다. 파일 경로명은 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 또는 데이터 프로세싱 시스템(110)에 의해 유지되는 콘텐츠 아이템들(155) 중 하나에 대응할 수 있다. 일부 구현예에서, 애플리케이션(145)은 정보 리소스(150)에 삽입하기 위해 추가 콘텐츠를 검색하기 위해 콘텐츠 퍼블리셔(120)에 액세스하기 위해 주소를 사용할 수 있다. 일부 구현예에서, 주소는 콘텐츠 제공자(115)에 대한 콘텐츠 요청을 생성하는데 사용될 수 있다. 일부 구현예에서, 주소는 콘텐츠 선택 프로세스에서 데이터 프로세싱 시스템(110)에 의해 선택될 콘텐츠 아이템(155)에 대한 플레이스홀더일 수 있다. 콘텐츠 슬롯에 포함된 주소를 사용하여, 어플리케이션(145)은 정보 리소스(150)에 삽입하기 위한 콘텐츠에 대한 요청을 생성할 수 있다. 요청은 다른 데이터 중에서도 특히, 콘텐츠 아이템(155)에 대한 주소, 디바이스 식별자, 디바이스 유형 및 애플리케이션 프로필을 포함할 수 있다. 디바이스 식별자는 클라이언트 디바이스(125)에 대응할 수 있다. 디바이스 유형은 클라이언트 디바이스(125)의 시스템 구성에 대응할 수 있다. 애플리케이션 프로필은 정보 리소스(150)를 실행하기 위해 어느 애플리케이션(예를 들어, 웹 브라우저 유형 및 버전 등)이 클라이언트 디바이스(125)상에서 실행 중인지를 표시할 수 있다. 요청이 송신되면, 네트워크(105)는 요청을 호스트 이름에서 식별된 콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)에 포워딩할 수 있다.
이어서, 콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)은 어플리케이션(145)으로부터 콘텐츠에 대한 요청을 수신할 수 있다. 그 다음, 콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)은 클라이언트 디바이스(125)에 제공하기 위해 콘텐츠 아이템(155)을 식별하기 위한 요청을 파싱할 수 있다. 콘텐츠 아이템(155)을 식별하면, 콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)은 콘텐츠 아이템(155)을 클라이언트 디바이스(125)의 애플리케이션(145)으로 전송 또는 송신하여 정보 리소스(150)에 삽입할 수 있다. 콘텐츠 아이템(155)은 인터렉션 검증 스크립트(160)(인터렉션 검증기라고도 함)를 포함할 수 있다. 인터렉션 검증 스크립트(160)의 기능에 관한 세부 사항은 아래에서 제공된다.
데이터 프로세싱 시스템(110)은 적어도 하나의 서버를 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템(110)은 적어도 하나의 데이터 센터 또는 서버 팜에 위치된 복수의 서버들 포함할 수 있다. 일부 구현예에서, 데이터 프로세싱 시스템(110)은 콘텐츠 배치 시스템을 포함할 수 있다. 데이터 프로세싱 시스템(110)은 적어도 하나의 콘텐츠 아이템 평가기(130), 적어도 하나의 스크립트 삽입기(135), 적어도 하나의 데이터베이스(140)를 포함할 수 있다. 콘텐츠 아이템 평가기(130) 및 스크립트 삽입기(135)는 각각 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 네트워크(105)를 통해 데이터베이스(140) 및 다른 컴퓨팅 디바이스(예를 들어, 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 또는 클라이언트 디바이스(125))와 통신하도록 구성된 프로그래머블 로직 어레이들과 같은 다른 로직 디바이스를 포함할 수 있다.
콘텐츠 아아템 평가기(130) 및 스크립트 삽입기(140)는 각각 적어도 하나의 프로세싱 유닛, 서버, 가상 서버, 회로, 엔진, 에이전트, 어플라이언스, 네트워크(105)를 통해 데이터베이스(140) 및 다른 컴퓨팅 디바이스(예를 들어, 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125))와 통신하도록 구성된 프로그래머블 로직 어레이들과 같은 다른 로직 디바이스를 포함할 수 있다. 콘텐츠 아이템 평가기(130) 및 스크립트 삽입기(135)는 적어도 하나의 컴퓨터 프로그램 또는 적어도 하나의 스크립트를 포함하거나 실행할 수 있다. 콘텐츠 아이템 평가기(130) 및 스크립트 삽입기는 별개의 컴포넌트들, 단일 컴포넌트 또는 데이터 프로세싱 시스템(110)의 일부일 수 있다. 콘텐츠 아이템 평가기(130) 및 스크립트 삽입기(135)는 하나 이상의 스크립트들을 실행하도록 구성된 하나 이상의 프로세서들과 같은 소프트웨어 및 하드웨어의 조합을 포함할 수 있다.
데이터 프로세싱 시스템(110)은 또한 하나 이상의 콘텐츠 저장소들 또는 데이터베이스(140)를 포함할 수 있다. 데이터베이스(140)는 데이터 프로세싱 시스템(110)에 로컬적일 수 있다. 일부 구현예에서, 데이터베이스(140)는 데이터 프로세싱 시스템(110)에 대해 원격일 수 있지만, 네트워크(105)를 통해 데이터 프로세싱 시스템(110)과 통신할 수 있다. 데이터베이스(140)는 콘텐츠 제공자(115)에 의해 제공된 콘텐츠 아이템들(155) 또는 각 콘텐츠 아이템(155)을 식별하는 참조 주소들을 포함할 수 있다. 일부 구현예에서, 데이터베이스(140)는 콘텐츠 퍼블리셔(120)에 의해 제공된 정보 리소스(150) 또는 각 정보 리소스(150)를 식별하는 참조 주소들을 포함할 수 있다. 데이터베이스(140)는 또한 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 또는 클라이언트 디바이스(125)에 제공하기 위한 인터렉션 검증 스크립트(160)를 포함할 수 있다. 인터렉션 검증 스크립트(160)의 세부 사항은 아래에서 제공된다.
콘텐츠 아이템 평가기(130)는 콘텐츠 제공자(115)의 하나 이상의 콘텐츠 아이템들(155)을 식별할 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 클라이언트 디바이스(125)로부터 콘텐츠에 대한 요청을 수신함에 응답하여 하나 이상의 콘텐츠 아이템들(115)을 식별할 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 클라이언트 디바이스(125)로부터의 콘텐츠에 대한 요청과 무관하게 하나 이상의 콘텐츠 아이템들(115)을 식별할 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 콘텐츠 제공자(115)의 콘텐츠 아이템(155)에 대한 데이터베이스(140)에 액세스할 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 콘텐츠 제공자(115)로부터 콘텐츠 아이템들(155)을 수신할 수 있다. 콘텐츠 제공자(115)는 콘텐츠 아이템(155)을 수정하기 위한 요청을 콘텐츠 아이템 평가기(130)에 전송할 수 있다. 수정 요청은 콘텐츠 아이템(155)을 포함할 수 있다. 각각의 콘텐츠 아이템(155)은 콘텐츠 아이템 식별자(예를 들어, 주소 또는 문자들의 알파벳 세트)에 의해 인덱싱될 수 있다. 콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)을 식별하기 위한 요청을 파싱할 수 있다. 식별된 각 콘텐츠 아이템(155)에 대해, 콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)의 실행가능한 코드를 파싱할 수 있다. 콘텐츠 아이템(155)의 실행가능한 코드는 마크업(예를 들어, HTML 및 CSS) 및 스크립팅 언어 코드(예를 들어, JavaScript™) 형태의 코드를 포함할 수 있다. 콘텐츠 아이템(155)의 실행가능한 코드를 파싱하는 것으로부터, 콘텐츠 아이템 평가기(130)는 하나 이상의 이벤트 핸들러(이벤트 리스너라고도 함)를 식별할 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 하나 이상의 이벤트 핸들러들을 식별하기 위해 콘텐츠 아이템(155)의 스크립팅 언어 코드를 파싱할 수 있다. 콘텐츠 아이템(155)의 각 이벤트 핸들러는 클라이언트 디바이스(125)의 애플리케이션(145)으로부터 정보 리소스(150) 또는 콘텐츠 아이템(155)으로 전달되는 대응하는 인터렉션 이벤트를 프로세싱하기 위한 루틴(예를 들어, 비동기 콜백 서브루틴)일 수 있다. 예를 들어, 콘텐츠 아이템(155)은 클릭 인터렉션 이벤트를 프로세싱하기 위한 온-클릭 이벤트 핸들러 및 키보드 프레스를 프로세싱하기 위한 키 프레스 이벤트 핸들러를 포함할 수 있다.
콘텐츠 아이템(155)의 이벤트 핸들러들 중에서, 콘텐츠 아이템 평가기(130)는 대응하는 인터렉션 이벤트를 검출하는 것에 응답하여 미리 결정된 액션을 수행하기 위한 함수로 구성된 하나 이상의 이벤트 핸들러들을 식별할 수 있다. 이벤트 핸들러들 중 적어도 하나는 미리 결정된 액션을 수행하기 위한 함수로 구성될 수 있다. 함수는 콘텐츠 아이템 평가기(130)에 의해 검색될 미리 지정된 함수들의 세트 중 하나일 수 있다. 일부 구현예에서, 함수의 트리거링에 응답하여 수행될 함수 및 미리 결정된 액션은 API(application programming interface)에 의해 정의될 수 있다. 예를 들어, 함수 호출은 애플리케이션(145)에 의해 액세스되거나 로드된 현재 정보 리소스로부터 함수 호출에 의해 주소가 특정된 다른 정보 리소스로 탐색하는 "ExitAPI.exit()"일 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)의 각 이벤트 핸들러의 실행가능한 코드를 파싱하여, 미리 결정된 액션을 수행하기 위한 함수로 구성된 하나 이상의 이벤트 핸들러들을 식별할 수 있다.
콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)에 대해 식별된 이벤트 핸들러를 순회하여 미리 결정된 액션을 수행하는 함수를 트래버싱할 수 있다. 콘텐츠 아이템 평가기(130)는 클라이언트 디바이스(125)로부터 콘텐츠에 대한 요청의 수신에 응답하여 또는 요청의 수신과 무관하게 콘텐츠 아이템(155)에 대한 이벤트 핸들러를 트래버싱할 수 있다. 각 이벤트 핸들러의 실행가능한 코드를 파싱함에 있어서, 콘텐츠 아이템 평가기(130)는 함수가 미리 정해진 액션을 수행하게 하기 위한 미리 정의된 문자열과 매칭되는 실행가능한 코드의 문자열을 식별할 수 있다. 이벤트 핸들러에 대한 실행가능한 코드에 대한 문자열이 함수에 대한 문자열을 포함하지 않으면, 콘텐츠 아이템 평가기(130)는 이벤트 핸들러가 함수로 구성되지 않은 것으로 식별할 수 있다. 반대로, 이벤트 핸들러에 대한 실행가능한 코드에 대한 문자열이 함수에 대한 문자열을 포함하는 경우, 콘텐츠 아이템 평가기(130)는 이벤트 핸들러를 미리 결정된 함수를 수행하기 위한 함수로 구성된 것으로 식별할 수 있다.
일부 구현예에서, 콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)이 콘텐츠 아이템(155)에 포함될 것으로 예상되는 미리 정의된 이벤트 핸들러들의 리스트 중 하나 이상의 이벤트 핸들러를 포함하는지 여부를 결정할 수 있다. 또한, 콘텐츠 아이템(155)은 일부 이벤트 핸들러들이 없거나 제외될 수 있다. 예를 들어, 콘텐츠 아이템(155)에 대한 실행가능한 코드는 온-클릭 이벤트 핸들러에 대한 명시적 정의를 가질 수 있지만, 터치-시작 핸들러에 대한 코드는 없을 수 있다. 미리 정의된 예상 이벤트 핸들러들의 리스트는 함수로 구성된 것으로 식별된 이벤트 핸들러에 첨부, 바인드 또는 페어링된 하나 이상의 이벤트 핸들러들 포함하거나 특정할 수 있다. 미리 정의된 예상 이벤트 핸들러들의 리스트는 데이터베이스(140)에서 유지될 수 있다. 일부 구현예에서, 콘텐츠 아이템 평가기(130)는 콘텐츠 아이템(155)에 포함된 이벤트 핸들러들을 트래버싱할 수 있다. 콘텐츠 아이템(155)에 포함된 이벤트 핸들러들이 트래버싱됨에 따라, 콘텐츠 아이템 평가기(130)는 이벤트 핸들러가 미리 정의된 예상 이벤트 핸들러들의 리스트 중 하나와 매칭되는지 여부를 결정할 수 있다. 콘텐츠 아이템(155)의 이벤트 핸들러들을 트래버싱함으로써, 콘텐츠 아이템 평가기(130)는 미리 정의된 예상 이벤트 핸들러들의 리스트 중 어느 이벤트 핸들러들이 콘텐츠 아이템(155)에 포함되지 않는지를 결정할 수 있다. 콘텐츠 아이템 평가기(130)는 미리 정의된 예상 이벤트 핸들러들의 리스트의 콘텐츠 아이템(155)에 초기적으로 포함되지 않은 이벤트 핸들러들을 콘텐츠 아이템(155)의 실행가능한 코드에 삽입하거나 포함시킬 수 있다. 삽입된 이벤트 핸들러는 초기에 null일 수 있으며, 대응하는 인터렉션 이벤트의 검출에 응답하여 액션을 수행하지 않도록 구성될 수 있다. 콘텐츠 아이템 평가기(130)는 또한 삽입된 이벤트 핸들러를 함수로 구성되지 않은 것으로 식별할 수 있다.
함수로 구성되지 않은 것으로 콘텐츠 아이템 평가기(130)에 의해 식별된 콘텐츠 아이템(155)의 각각의 이벤트 핸들러에 대해, 스크립트 삽입기(135)는 이벤트 핸들러가 미리 정의된 이벤트 핸들러들의 리스트 중 하나와 매칭되는지 여부를 결정할 수 있다. 미리 정의된 이벤트 핸들러들의 리스트는 함수로 구성된 것으로 식별된 이벤트 핸들러에 첨부, 바인드 또는 페어링된 하나 이상의 이벤트 핸들러들 포함하거나 특정할 수 있다. 미리 정의된 이벤트 핸들러들의 리스트는 데이터베이스(140)에서 유지될 수 있다. 미리 정의된 이벤트 핸들러들의 리스트는 클라이언트 디바이스(125)에서 사용자에 의한 단일의 물리적 인터렉션과 관련하여 호출될 미리 결정된 이벤트 핸들러들의 그룹 또는 세트를 포함할 수 있다. 예를 들어, 사용자가 클라이언트 디바이스(125)에서 터치스크린 상의 한 지점에 접촉하면, 물리적 접촉이 비교적 짧은 지속 시간이면 터치-시작 이벤트, 터치-종료 이벤트 및 클릭 이벤트가 호출될 수 있고 또는 물리적 접촉은 비교적 오랜 지속 시간이면 스크롤 이벤트가 호출될 수 있다. 이를 고려하여, 미리 정의된 이벤트 핸들러들의 리스트는 터치-종료 이벤트 및 온-클릭 이벤트를 포함하도록 정의될 수 있다.
스크립트 삽입기(135)는 함수로 구성되지 않은 것으로 식별된 하나 이상의 이벤트 핸들러들을 트래버싱하여, 인터렉션 검증 스크립트(160) 또는 함수로 구성된 것으로 식별된 이벤트 핸들러에 첨부할지 여부를 결정할 수 있다. 함수로 구성되지 않은 것으로 식별된 하나 이상의 이벤트 핸들러들을 트래버싱하는 동안, 스크립트 삽입기(135)는 함수로 구성되지 않은 것으로 식별된 이벤트 핸들러를 미리 정의된 이벤트 핸들러들의 리스트 중 하나의 이벤트 핸들러와 비교할 수 있다. 이벤트 핸들러가 미리 정의된 이벤트 핸들러들의 리스트 중 어느 것과도 매칭되지 않는 것으로 식별되면, 스크립트 삽입기(135)는 이벤트 핸들러를 있는 그대로 유지한다. 이러한 방식으로, 이벤트 핸들러의 원래 기능이 유지될 수 있다. 반면에, 이벤트 핸들러가 미리 정의된 이벤트 핸들러들의 리스트 중 하나의 이벤트 핸들러와 매칭되는 것으로 식별되면, 스크립트 삽입기(135)는 함수로 구성되지 않은 것으로 식별된 이벤트 핸들러를 함수(예: JavaScript™ 함수 "addEventListener()"사용)로 구성된 것으로 식별된 하나 이상의 이벤트 핸들러들에 첨부할 수 있다. 어느 경우이든, 스크립트 삽입기(135)는 함수로 구성되지 않은 더 많은 이벤트 핸들러들이 있는지 여부를 결정할 수 있다. 함수로 구성되지 않은 것으로 식별된 더 많은 이벤트 핸들러들이 있으면, 스크립트 삽입기(135)는 함수로 구성되지 않은 것으로 식별된 다음 이벤트 핸들러를 식별하고 함수를 반복할 수 있다. 그렇지 않으면, 함수로 구성되지 않은 것으로 식별된 이벤트 핸들러가 더 이상 없다면, 스크립트 삽입기(135)는 인터렉션 검증 스크립트(160)를 콘텐츠 아이템(155)에 삽입하도록 진행할 수 있다.
스크립트 삽입기(135)는 인터렉션 검증 스크립트(160)를 콘텐츠 아이템(155)에 삽입하거나 포함시킬 수 있다. 일부 구현예에서, 스크립트 삽입기(135)는 콘텐츠 아이템(155)을 파싱하여, 콘텐츠 아이템(155)이 인터렉션 검증 스크립트(160)로 이전에 구성되어 있는지 또는 이미 포함되어 있는지 여부를 결정할 수 있다. 콘텐츠 아이템(155)이 인터렉션 검증 스크립트(160)로 이전에 구성되었거나 이미 포함하는 것으로 결정되면, 스크립트 삽입기(135)는 추가 수정없이 콘텐츠 아이템(155)을 송신할 수 있다. 그렇지 않으면, 콘텐츠 아이템(155)이 인터렉션 검증 스크립트(160)로 이전에 구성되지 않았거나 포함하지 않은 것으로 결정되면, 스크립트 삽입기(135)는 콘텐츠 아이템(155)에 인터렉션 검증 스크립트(160)를 삽입할 수 있다. 인터렉션 검증 스크립트(160)는 하나 이상의 이벤트 핸들러들을 포함하는 실행가능한 코드의 다른 부분에 앞서 스크립트 삽입기(135)에 의해 실행가능한 코드의 일부에 삽입될 수 있다. 이러한 방식으로, 클라이언트 디바이스(125)에서 실행되는 애플리케이션(145)은 후속 실행가능한 코드에 포함된 이벤트 핸들러에 앞서 인터렉션 검증 스크립트(160)를 프로세싱하고 실행할 것이다. 일부 구현예에서, 스크립트 삽입기(135)는 이벤트 핸들러들을 포함하는 실행가능한 코드의 부분들 이전에 콘텐츠 아이템(155)의 실행가능한 코드의 부분에 이벤트 핸들러들의 첨부를 삽입하거나 포함시킬 수 있다. 일부 구현예에서, 스크립트 삽입기(135)는 미리 정의된 이벤트 핸들러들의 리스트 상에 함수로 구성되지 않은 것으로 식별된 이벤트 핸들러 및 함수로 구성된 것으로 식별된 이벤트 핸들러들을 인터렉션 검증 스크립트(160)에 첨부할 수 있다.
일부 구현예에서, 스크립트 삽입기(135)는 인터렉션 검증 스크립트(160)를 콘텐츠 아이템(155) 외부에 삽입할 수 있다. 콘텐츠 아이템(155) 외부에 삽입되는 경우, 인터렉션 검증 스크립트(160)는 콘텐츠 아이템(155)의 하나 이상의 이벤트 핸들러들과 인터페이스할 수 있다. 스크립트 삽입기(135)는 인터렉션 검증 스크립트(160)를 정보 리소스(150)에 삽입할 수 있다. 일부 구현예에서, 스크립트 삽입기(135)는 인터렉션 검증 스크립트(160)를 콘텐츠 아이템(155)에 대한 정보 리소스(150)의 콘텐츠 슬롯(예를 들어, 인라인 프레임)에 삽입할 수 있다. 일부 구현예에서, 스크립트 삽입기(135)는 인터렉션 검증(160)을 섀도우 DOM 트리 엘리먼트로서 삽입할 수 있다. 섀도우 DOM 트리 엘리먼트는 콘텐츠 아이템(155)에 대한 정보 리소스(150)의 콘텐츠 슬롯의 일부일 수 있다. 인터렉션 검증 스크립트(160)의 기능에 관한 세부 사항은 아래에서 제공된다.
이제 도 2를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하기 위한 시스템(200)이 도시되어 있다. 시스템(200)은 환경(100)의 일부 또는 모든 엘리먼트들을 포함할 수 있고, 도 1과 관련하여 상기 기술된 콘텐츠 아이템(155) 및 인터렉션 검증 스크립트(160)의 보다 상세한 구성을 나타낼 수 있다. 개요에서, 시스템(200)은 클라이언트 디바이스(125)에서 실행되는 애플리케이션(145)에 제공된 정보 리소스(150)에 삽입된 콘텐츠 아이템(155)을 포함할 수 있다. 시스템(200)의 각 컴포넌트는 애플리케이션(145)에 의해 특정된 방식으로 클라이언트 디바이스(125)의 하나 이상의 프로세서들에 의해 실행될 메모리 상의 명령어들로서 저장될 수 있다. 콘텐츠 아이템(155)은 콘텐츠 아이템(155)에 대한 실행가능한 코드의 제1 부분(210A)에 인터렉션 검증 스크립트(160)를 포함시킬 수 있다. 인터렉션 검증 스크립트(160)는 이벤트 검출기(220), 등록 로그기(230) 및 함수 활성화기(240)를 포함할 수 있다. 콘텐츠 아이템(155)은 또한 콘텐츠 아이템(155)에 대한 실행가능한 코드의 제2 부분(210B)에 하나 이상의 이벤트 핸들러들(250A-N)을 포함할 수 있다.
콘텐츠 제공자(115) 또는 데이터 프로세싱 시스템(110)으로부터 콘텐츠 아이템(155)을 수신함에 따라, 애플리케이션(145)은 콘텐츠 아이템(155)을 정보 리소스(150)의 콘텐츠 슬롯(예를 들어, 인라인 프레임 엘리먼트)에 삽입할 수 있다. 클라이언트 디바이스(125)에서 실행되는 애플리케이션(145)은 그 안의 실행가능한 코드에 따라 콘텐츠 아이템(155)을 파싱, 실행 및 제시할 수 있다. 콘텐츠 아이템(155)을 프로세싱함에 있어서, 애플리케이션(145)은 콘텐츠 아이템(155)의 실행가능한 코드를 순차적으로 파싱하고 위에서 아래로 판독할 수 있다. 일부 구현예에서, 애플리케이션(145)은 실행가능한 코드의 제2 부분(210B)의 하나 이상의 이벤트 핸들러들(250A-N)을 실행하기 전에 실행가능한 코드의 제1 부분(210A)의 인터렉션 검증 스크립트(160)의 이벤트 검출기(220), 등록 로그기(230) 또는 함수 활성화기(240)를 실행할 수 있다. 이러한 방식으로, 콘텐츠 아이템(155)에 대한 실행가능한 코드의 제1 부분(210A)에 인코딩된 인터렉션 검증 스크립트(160)의 기능은 실행가능한 코드의 제2 부분(210B)에 인코딩된 이벤트 핸들러들(250A-N) 중 어느 것보다 먼저 실행될 수 있다. 일부 구현예에서, 인터렉션 검증 스크립트(160)가 콘텐츠 아이템(155) 외부의 정보 리소스(150)에 삽입되는 경우(예를 들어, 콘텐츠 아이템(155)에 대한 콘텐츠 슬롯을 정의하는 인라인 프레임에서), 애플리케이션(145)은 콘텐츠 아이템(155)에 대한 실행가능한 코드 앞에 인터렉션 검증 스크립트(160)에 대응하는 실행가능한 코드를 실행할 수 있다.
이벤트 검출기(220)는 콘텐츠 아이템(155)에 기인한 하나 이상의 인터렉션 이벤트들을 모니터링할 수 있다. 인터렉션 이벤트는 클라이언트 디바이스(125)의 임의의 입력/출력(I/O) 디바이스를 가진 사용자에 의한 인터렉션 또는 제스처에 대응할 수 있다. 인터렉션 이벤트는 터치-시작 이벤트, 터치-종료 이벤트, 터치-이동, 긴 프레스 이벤트, 온-스크롤 이벤트, 온-플링 이벤트, 마우스-업 이벤트, 마우스-다운 이벤트, 온-클릭 이벤트, 더블-클릭 이벤트, 키-업 이벤트, 키-다운 이벤트, 키-프레스 이벤트, 마우스-이동 이벤트, 마우스-업 이벤트, 마우스-다운 이벤트, 마우스-스크롤 이벤트 및 마우스-휠 이벤트 등을 포함할 수 있다. 인터렉션 이벤트는 애플리케이션(145)에 의해 검출될 수 있고, 애플리케이션(145)을 통해 클라이언트 디바이스(125)의 I/O 디바이스로부터 정보 리소스(150) 또는 콘텐츠 아이템(155)으로 전달될 수 있다. 애플리케이션(145)은 인터렉션 이벤트가 콘텐츠 아이템(155)에 기인하는지 여부를 결정할 수 있다. 일부 구현예에서, 애플리케이션(145)은 인터렉션 이벤트의 좌표가 콘텐츠 아이템(155)에 대응하는 좌표 범위 내에 있을 때 인터렉션 이벤트가 콘텐츠 아이템(155)에 기인한 것으로 결정할 수 있다. 인터렉션 이벤트가 콘텐츠 아이템(155)에 기인한 것으로 결정되면, 애플리케이션(145)은 인터렉션 이벤트를 콘텐츠 아이템(155)에 전달하여 그 안의 실행가능한 코드에 의해 프로세싱될 수 있다.
다수의 인터렉션 이벤트들이 전달될 수 있고, 콘텐츠 아이템(155)의 대응하는 이벤트 핸들러들(250A-N)은 클라이언트 디바이스(125)의 I/O 디바이스와 사용자에 의한 단일 인터렉션에 응답하여 트리거링될 수 있다. 콘텐츠 아이템(155)의 렌더링에 대응하는 클라이언트 디바이스(125)의 터치 스크린 상의 포인트에 대한 단일 인터렉션으로, 애플리케이션(145)은 콘텐츠 아이템(155)에 순차적으로 터치-시작 이벤트 및 터치-종료 이벤트를 전달할 수 있다. 애플리케이션(145)은 다른 팩터들 중에서도, 포지션 변화 및 사용자 인터렉션의 지속 시간에 기초하여 하나 이상의 추가 이벤트들을 전달할 수 있다. 사용자 인터렉션 동안 포지션의 변화에 기초하여, 애플리케이션(145)은 또한 특히 터치-시작 이벤트와 터치-종료 이벤트 사이의 온-스크롤 이벤트 또는 터치-이동 이벤트를 콘텐츠 아이템(155)에 전달할 수 있다. 사용자 인터렉션의 지속 시간이 미리 결정된 시간 임계치보다 큰 경우, 애플리케이션(145)은 또한 터치-시작 이벤트 및 터치-종료 이벤트에 후속하는 긴 프레스 이벤트를 콘텐츠 아이템(155)에 전달할 수 있다. 반대로, 사용자 인터렉션의 지속 시간이 미리 결정된 시간 임계치 이하이면, 애플리케이션(145)은 또한 터치-시작 이벤트 및 터치-종료 이벤트에 후속하는 온-클릭 이벤트를 콘텐츠 아이템(155)에 전달할 수 있다.
이벤트 검출기(220)는 애플리케이션(145)에 의해 전달된 하나 이상의 인터렉션 이벤트들을 수신, 식별 또는 검출할 수 있다. 이벤트 검출기(220)는 실행가능한 코드의 제1 부분(210A)에 인코딩되기 때문에, 이벤트 검출기(220)는 실행가능한 코드의 제2 부분(210B)에 인코딩된 인터렉션 이벤트에 대한 대응하는 이벤트 핸들러(250A-N)의 트리거링에 앞서 인터렉션 이벤트를 수신하거나 검출할 수 있다. 또한, 애플리케이션(145)으로부터 전달된 동일한 인터렉션 이벤트는 제1 부분(210A)에 인코딩된 이벤트 검출기(220)에 의해 그리고 이어서 콘텐츠 아이템(155)의 제2 부분(210B)에 인코딩된 대응하는 이벤트 핸들러(250A-N)에 의해 여러 번 검출 또는 등록될 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 인터렉션 이벤트들이 애플리케이션(145)에 의해 콘텐츠 아이템(115)으로 전달됨에 따라 하나 이상의 인터렉션 이벤트들을 순차적으로 검출할 수 있다. 클라이언트 디바이스(125)의 터치스크린과의 사용자 인터렉션이 있는 경우, 이벤트 검출기(220)는 애플리케이션(145)에 의해 전달된 터치-시작 이벤트 및 터치-종료 이벤트를 순차적으로 검출할 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 터치-시작 이벤트와 터치-종료 이벤트 사이의 온-스크롤 이벤트 또는 터치-이동 이벤트를 검출할 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 터치-시작 이벤트 및 터치-종료 이벤트에 후속하는 온-클릭 이벤트를 검출할 수 있다. 인터렉션 검증 스크립트(160)가 검출된 인터렉션 이벤트에 응답하기 위한 것인지 여부는 어떤 대응하는 이벤트 핸들러(250A-N)가 함수(260)로 구성되는지에 의존할 수 있다.
이벤트 검출기(220)에 의한 각 인터렉션 이벤트의 검출에 이어서, 인터렉션 이벤트에 대응하는 이벤트 핸들러(250A-N)는 인터렉션 이벤트를 프로세싱할 수 있다. 각 이벤트 핸들러(250A-N)는 특정한 유형의 인터렉션 이벤트를 프로세싱할 수 있다. 예를 들어, 터치-시작 이벤트 핸들러는 터치-시작 이벤트를 프로세싱하고, 온-스크롤 이벤트 핸들러는 온-스크롤 이벤트를 프로세싱하고, 터치-종료 이벤트 핸들러는 터치-종료 이벤트를 프로세싱하고, 그리고 온-클릭 이벤트 핸들러는 온-클릭 이벤트를 프로세싱할 수 있다. 인터렉션 검증 스크립트(160)에 특정된 바와 같이 이벤트 핸들러(250A-N)의 서브셋이 첨부될 수 있다. 일부 구현예에서, 이벤트 핸들러들(250A-N)의 서브셋은 이벤트 검출기(220), 등록 로그기(230) 또는 함수 활성화기(240)에 서로 첨부될 수 있다. 나머지 세트의 이벤트 핸들러(250A-N)는 인터렉션 검증 스크립트(160)의 영향 없이 프로그래밍된 기능을 수행할 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 리포팅 모드에서 동작할 수 있다. 리포팅 모드에 있는 동안, 이벤트 검출기(220)는 특정한 유형의 인터렉션 및 이벤트 핸들러(250A-N)를 위해 구성된 함수(260)을 포함하는 진단 메시지를 생성할 수 있다. 이벤트 검출기는 진단 메시지를 데이터 프로세싱 시스템(110)에 전송할 수 있다. 이러한 방식으로, 다수의 클라이언트 디바이스(125)를 통해 집계된 진단 메시지는 콘텐츠 아이템(155)의 행동을 결정 또는 측정하기 위해 사용될 수 있다. 또한, 리포팅 모드에 있는 동안, 이벤트 검출기(220)는 하나 이상의 이벤트 핸들러(250A-N)와 같은 콘텐츠 아이템(155)의 원래 프로그래밍된 기능을 유지할 수 있다. 이벤트 검출기(220)는 또한 함수 활성화기(240)의 기능을 비활성화할 수 있다.
적어도 하나의 이벤트 핸들러(250A-N)(이하, 일반적으로 이벤트 핸들러(250A)라고 함)는 콘텐츠 아이템(155)으로부터 전달된 인터렉션 이벤트에 응답하여 미리 정의된 액션을 수행하는 함수(260)로 구성될 수 있다. 다른 이벤트 핸들러들(250A-N)(이후 일반적으로 이벤트 핸들러(250B)라고 함)은 함수(260)없이 구성될 수 있다. 이와 같이, 이벤트 핸들러(250A)는 애플리케이션(145)으로부터 콘텐츠 아이템(155)으로 전달된 대응하는 인터렉션 이벤트의 검출 또는 수신에 응답하여 함수(260)를 호출하거나 트리거링하여 미리 정의된 액션을 수행할 수 있다. 상기 논의된 바와 같이, 함수(260)는 콘텐츠 아이템 평가기(130)에 의해 특정된 미리 지정된 함수들의 세트 중 하나를 포함할 수 있다. 일부 구현예에서, 함수의 트리거링에 응답하여 수행될 함수 및 미리 결정된 액션은 애플리케이션 프로그래밍 인터페이스(API)에 의해 정의될 수 있다(예를 들어, 애플리케이션(145)에 의해 액세스 또는 로딩되는 정보 리소스(150)로부터 다른 정보 리소스로 탐색하기 위한 "ExitAPI.exit()"). 이벤트 핸들러(250A)는 특히 터치-종료 이벤트 또는 온-클릭 이벤트일 수 있다. 반대로, 이벤트 핸들러(250B)는 애플리케이션(145)으로부터 콘텐츠 아이템(155)으로 전달된 대응하는 인터렉션 이벤트의 검출 또는 수신에 응답하여 액션을 수행하지 않거나 함수(260) 이외의 다른 기능을 호출할 수 있다. 이벤트 핸들러(250B)는 특히 터치-종료 이벤트 또는 온-클릭 이벤트일 수 있다. 일부 구현예에서, 이벤트 핸들러(250B)에 의해 프로세싱되는 인터렉션 이벤트의 유형은 이벤트 핸들러(250A)에 의해 프로세싱된 인터렉션 이벤트의 유형과 상이할 수 있다. 예를 들어, 이벤트 핸들러(250A)는 함수(260)로 구성된 터치-종료 이벤트 핸들러일 수 있고, 이벤트 핸들러(250B)는 온-클릭 이벤트 핸들러일 수 있다.
애플리케이션(145)에 의해 전달된 인터렉션 이벤트를 검출하면, 이벤트 검출기(220)는 인터렉션 이벤트가 인터렉션 검증 스크립트(160)에 특정된 것과 같이 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는지 여부를 결정할 수 있다. 전술한 바와 같이, 첨부된 이벤트 핸들러(250A-N)는 데이터베이스(140)에서 유지되는 미리 정의된 이벤트 핸들러들의 리스트에 의해 특정된 이벤트 핸들러 중 어느 하나일 수 있다. 일부 구현예에서, 첨부된 이벤트 핸들러들(250A-N)은 특히 터치-시작 이벤트 핸들러, 터치-종료 스크롤 핸들러 및 온-클릭 이벤트 핸들러를 포함할 수 있다. 인터렉션 이벤트가 임의의 첨부된 이벤트 핸들러(250A-N)에 대응하지 않는 것으로 결정되면, 대응하는 이벤트 핸들러(250A-N)(만약 콘텐츠 아이템(155)에 구성되어 있는 경우)가 인터렉션 이벤트를 프로세싱할 수 있다. 한편, 인터렉션 이벤트가 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 것으로 결정되면, 이벤트 검출기(220)는 이벤트 핸들러(250A-N)에 대응하는 인터렉션 이벤트의 검출 시간을 식별할 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 시간을 추적하기 위해 타이머를 유지할 수 있다. 일부 구현예에서, 이벤트 검출기(220)는 인터렉션 이벤트가 함수(260)로 구성된 이벤트 핸들러(250A)에 대응하는지 여부를 결정할 수 있다. 인터렉션 이벤트가 함수(260)로 구성된 이벤트 핸들러(250A)에 대응하는 것으로 결정되면, 이벤트 검출기(220)는 이벤트 핸들러(250A)에 대응하는 인터렉션 이벤트의 검출 시간을 식별할 수 있다. 이벤트 검출기(220)는 또한 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 다른 인터렉션 이벤트의 검출을 대기하기 위해, 이벤트 핸들러(250A)에 대응하는 인터렉션 이벤트의 검출로부터 타이머 카운트를 시작할 수 있다.
이벤트 검출기(220)가 인터렉션 이벤트를 모니터링함에 따라, 등록 로그기(230)는 미리 결정된 액션을 수행하기 위한 함수(260)의 호출의 등록을 식별하거나 모니터링할 수 있다. 이벤트 핸들러들(250A-N) 중 하나가 호출되었다는 것을 검출함에 응답하여, 등록 로그기(230)는 어느 이벤트 핸들러(250A-N)가 호출되는지를 식별할 수 있다. 일부 구현예에서, 등록 로그기(230)는 애플리케이션(145)에 의해 전달된 대응하는 인터렉션 이벤트를 검출함에 응답하여, 호출될 이벤트 핸들러(250A-N)를 식별할 수 있다. 어떤 이벤트 핸들러(250A-N)가 트리거링되는지의 식별을 사용하여, 등록 로그기(230)는 함수(260)로 구성된 이벤트 핸들러(250A)가 트리거링되는지 또는 구성이 없는 이벤트 핸들러(250B)가 트리거링되는지 여부를 결정한다. 이벤트 핸들러(250A)가 대응하는 인터렉션 이벤트에 응답하여 트리거링될 것으로 결정되면, 등록 로그기(230)는 이벤트 핸들러(250A)에 구성된 함수(260)의 호출을 등록할 수 있다. 일부 구현예에서, 이벤트 핸들러(250A)에 대응하는 인터렉션 이벤트를 검출하면, 등록 로그기(230)는 함수(260)의 호출을 등록할 수 있다. 등록 로그기(230)는 클라이언트 디바이스(125)의 로컬 메모리에 함수(260)의 호출의 등록을 추적하고 저장할 수 있다. 이벤트 핸들러(250A)에 대한 대응하는 인터렉션 이벤트가 애플리케이션(145)으로부터 콘텐츠 아이템(155)으로 전달되면, 이벤트 핸들러(250A)는 함수(260)을 호출하거나 트리거링할 수 있다. 일부 구현예에서, 함수(260)의 호출을 등록할 때, 등록 로그기(230)는 함수(260)에 대한 미리 결정된 액션의 실행을 방지하거나 유지할 수 있다. 등록 로그기(230)는 함수(260)의 호출의 등록 시간을 식별할 수 있다. 일부 구현예에서, 등록 로그기(230)는 시간을 추적하기 위해 타이머를 유지할 수 있다. 함수(260)의 호출의 등록에 응답하여, 등록 로그기(230)는 등록 시점으로부터 타이머의 카운팅을 시작하여 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 다른 인터렉션 이벤트의 검출을 대기할 수 있다.
한편, 이벤트 핸들러(250B)가 대응하는 인터렉션 이벤트에 응답하여 트리거링될 것으로 결정되면, 등록 로그기(230)는 이벤트 핸들러(250A)에 구성된 함수(260)의 호출의 등록을 식별할 수 있다. 일부 구현예에서, 이벤트 핸들러(250B)의 트리거링은 이벤트 핸들러(250A)의 트리거링 이전에 발생할 수 있다. 이벤트 핸들러(250B)가 이벤트 핸들러(250A)의 트리거링 이전에 트리거링되면, 등록 로그기(230)는 함수의 호출의 등록이 없음을 식별할 수 있다. 등록 로그기(230)는 또한 이벤트 핸들러(250A)의 트리거링을 대기할 수 있고, 함수 호출(260)의 등록에 대한 모니터링을 계속할 수 있다. 일부 구현예에서, 이벤트 핸들러(250B)의 트리거링은 이벤트 핸들러(250A)의 트리거링 후에 발생할 수 있다. 이벤트 핸들러(250A)의 트리거링 이후에 이벤트 핸들러(250B)가 트리거링되면, 이벤트 핸들러(250A)에 구성된 함수(260)는 이미 호출되었을 수 있고, 등록 로그기(230)는 함수(260)의 호출을 등록했을 수 있다.
첨부된 이벤트 핸들러들(250A-N) 중 하나에 대응하는 인터렉션 이벤트의 검출 타이밍 및 미리 결정된 임계치(예를 들어, 시간 윈도우)와 관련하여 함수(260)의 호출의 등록을 이용하여, 함수 활성화기(240)는 애플리케이션(145)으로 하여금 함수(260)의 미리 결정된 액션을 수행하게 할 수 있다. 함수 활성화기(240)는 첨부된 이벤트 핸들러(230A-N)에 대응하는 하나 이상의 인터렉션 이벤트가 검출되는지 여부를 결정할 수 있다. 위에서 논의된 바와 같이, 첨부된 이벤트 핸들러(230A-N)는 함수(260)로 구성된 이벤트 핸들러(250A) 및 구성이 없는 이벤트 핸들러(250B)를 포함할 수 있다. 검출된 것으로 결정된 첨부된 이벤트 핸들러(230A-N) 중 하나에 대응하는 각각의 인터렉션 이벤트에 대해, 함수 활성화기(240)는 인터렉션 이벤트에 대한 시간을 식별할 수 있다. 인터렉션 이벤트들이 검출될 것으로 결정되지 않으면, 함수 활성화기(240)는 애플리케이션(145)에 의해 전달된 임의의 인터렉션 이벤트들의 검출을 대기할 수 있다. 함수 활성화기(240)는 또한 함수(260)의 호출이 등록되었는지를 결정할 수 있다. 함수(260)의 호출이 등록될 것으로 결정되면, 함수 활성화기(240)는 함수(260)의 호출의 등록 시간을 식별할 수 있다. 함수(260)의 호출이 등록되지 않을 것으로 결정되면, 함수 활성화기(240)는 함수(260)의 호출의 등록을 대기할 수 있다. 기능 활성화기(240)는 인터렉션 이벤트 또는 함수(260)의 호출의 등록을 검출하는 것에 응답하여, 인터렉션 이벤트의 검출 시간을 등록 시간과 비교할 수 있다.
함수 활성화기(240)는 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 인터렉션 이벤트의 검출이 이벤트 핸들러(250A)의 함수(260)의 호출의 등록에 선행하는지 또는 후행하는지를 결정할 수 있다. 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행하거나 후행하는지를 결정하기 위해, 함수 활성화기(240)는 인터렉션 이벤트의 검출 시간을 등록 시간과 비교할 수 있다. 함수 활성화기(240)는 첨부된 이벤트 핸들러들(250A-N) 중 임의의 하나에 대응하는 인터렉션 이벤트가 먼저 검출되고 함수(260)의 호출이 등록되지 않은 경우, 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행한다고 결정할 수 있다. 인터렉션 이벤트는 함수(260)로 구성된 이벤트 핸들러(250A) 또는 함수(260)의 구성이 없는 이벤트 핸들러(250B)에 대응할 수 있다. 함수 활성화기(240)는 또한 인터렉션 이벤트의 검출 시간이 함수(260)의 호출의 등록 시간 이전인 경우, 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행한다고 결정할 수 있다. 반대로, 함수 활성화기(240)는 함수(260)의 호출이 먼저 등록되고 임의의 첨부된 이벤트 핸들러들(250A-N)에 대응하는 인터렉션 이벤트들이 검출되지 않으면, 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 후행하는 것으로 결정할 수 있다. 함수 활성화기(240)는 또한 인터렉션 이벤트의 검출 시간이 함수(260)의 호출의 등록 시간에 후속하는 경우, 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 후행하는 것으로 결정할 수 있다.
인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행하는지 또는 후행하는지에 기초하여, 함수 활성화기(240)는 검출과 등록 사이의 미리 결정된 임계치를 설정할 수 있다. 미리 결정된 임계치는 애플리케이션(145)이 클라이언트 디바이스(125)의 I/O 디바이스로부터 수신된 인터렉션 이벤트를 프로세싱함에 있어서, 애플리케이션(145)이 함수 활성화기(240)를 실행한 다음 대응하는 이벤트 핸들러(250A-N)를 실행함에 따라 예상되는 시간의 양을 고려하도록 설정될 수 있다. 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행하는 것으로 결정되는 경우, 함수 활성화기(240)는 미리 결정된 임계치를 미리 결정된 시간 범위(예를 들어, 1000ms 내지 2000ms)로부터 하나의 값으로 설정할 수 있다. 함수 활성화기(240)는 함수(260)로 구성된 이벤트 핸들러(250A)의 유형에 기초하여 미리 결정된 임계치를 설정할 수 있다. 예를 들어, 터치-종료 이벤트 핸들러가 함수(260)로 구성된 경우, 함수 활성화기(240)는 미리 결정된 임계치를 1500ms로 설정할 수 있다. 한편, 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 후행하는 것으로 결정되면, 함수 활성화기(240)는 미리 결정된 임계치를 미리 결정된 시간 범위(예를 들어, 50ms~350ms)와 상이한 다른 값으로 설정할 수 있다. 함수 활성화기(240)는 함수(260)없이 구성된 이벤트 핸들러(250B)의 유형에 기초하여 미리 결정된 임계치를 설정할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 인터렉션 이벤트의 검출이 함수(260)의 호출의 등록에 선행하는지 또는 후행하는지에 관계없이 미리 결정된 임계치를 동일한 고정 값으로 설정할 수 있다.
함수 활성화기(240)는 첨부된 이벤트 핸들러들(250A-N) 중 하나에 대응하는 인터렉션 이벤트의 검출과 함수(260)의 호출의 등록 사이의 시간이 미리 결정된 임계치보다 작은지 여부를 결정할 수 있다. 이벤트 핸들러(250A) 외에 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 인터렉션 이벤트가 등록 전에 검출되면, 함수 활성화기(240)는 미리 결정된 임계치 내에서 함수(260)의 호출의 등록을 대기할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 인터렉션 이벤트의 검출로부터 시간을 카운트하기 위해 타이머를 유지할 수 있다. 함수 활성화기(240)는 인터렉션 이벤트의 검출로부터 경과된 시간의 양을 미리 결정된 임계치와 비교할 수 있다. 반대로, 함수(260)의 호출의 등록이 인터렉션 이벤트의 검출 전에 발생하면, 함수 활성화기(240)는 미리 결정된 임계치 내에서 첨부된 이벤트 핸들러(250A-N) 중 하나에 대응하는 인터렉션 이벤트의 검출을 대기할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 함수(260)의 호출의 등록으로부터 시간을 카운팅하기 위해 타이머를 유지할 수 있다. 함수 활성화기(240)는 함수(260)의 호출 등록으로부터 경과된 시간의 양을 미리 결정된 임계치와 비교할 수 있다.
인터렉션 이벤트의 검출 및 함수(260)의 호출의 등록이 미리 결정된 임계치 내에서 발생한 것으로 결정되면, 함수 활성화기(240)는 애플리케이션(145)으로 하여금 함수(260)의 미리 결정된 액션을 수행하게 할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 이벤트 핸들러(250A)에 구성된 함수(260)의 트리거링을 허용할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 미리 결정된 액션을 실행하기 위해 함수(260)의 호출의 등록을 검색할 수 있다. 반대로, 인터렉션 이벤트의 검출 및 함수(260)의 호출의 등록이 미리 결정된 임계치 내에서 발생하지 않은 것으로 결정되면, 함수 활성화기(240)는 함수(260)의 미리 결정된 기능의 실행을 방지할 수 있다. 일부 구현예에서, 함수 활성화기(240)는 인터렉션 이벤트를 무시할 수 있다.
이러한 방식으로, 인터렉션 검증 스크립트(160)는 콘텐츠 아이템(155)으로 하여금 다르게 행동하여 사용자가 예상한 때와 관련하여 조기 또는 지연된 함수(260)의 트리거링을 방지할 수 있다. 따라서, 인터렉션 검증 스크립트(160)는 콘텐츠 아이템(155) 및 기본 정보 리소스(150)와의 인터렉션의 품질을 증가시킬 수 있다. 또한, 인터렉션 검증 스크립트(160)가 나머지 콘텐츠 아이템(155)의 구성에 최소한의 영향을 미칠 수 있으므로, 콘텐츠 아이템(155)(예를 들어, 이벤트 핸들러(250A-N))의 원래 프로그래밍된 기능이 보존될 수 있다.
이제 도 3a를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하는 프로세스에 대한 순서도가 도시된다. 개요에서, 프로세스(300A)는 애플리케이션(150) 및 인터렉션 검증 스크립트(160)가 없는 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(305A)는 애플리케이션(150) 및 인터렉션 검증 스크립트(160)가 있는 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(300A 및 305A) 둘 모두에서, 콘텐츠 아이템(155)의 온-클릭 이벤트 핸들러는 미리 결정된 함수를 수행하도록 함수(260)을 트리거링하도록 구성될 수 있다. 인터렉션 검증 스크립트(160)는 온-클릭 이벤트 핸들러를 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러에 첨부했을 수 있다.
프로세스(300A) 하에서, 클라이언트 디바이스(125)의 사용자는 정보 리소스(150) 내에 제시된 콘텐츠 아이템(155)의 렌더링에 대응하는 터치스크린 상의 포인트에 대한 터치(302)를 수행할 수 있다. 애플리케이션(145)은 터치(302)를 터치-시작 이벤트(304)로 변환하여 콘텐츠 아이템(155)으로 전달할 수 있다. 콘텐츠 아이템(155)의 터치-시작 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-시작 이벤트(304)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 클라이언트 디바이스(125)의 터치스크린으로부터 터치(302)의 릴리스(306)에 따라, 애플리케이션(145)은 릴리스(306)를 터치-종료 이벤트(308) 및 터치-종료 이벤트(308)에 후속하는 온-클릭 이벤트(310)로 변환할 수 있다. 터치(302) 및 릴리스(306)는 클라이언트 디바이스(125)의 터치 스크린과의 사용자에 의한 동일한 인터렉션의 일부일 수 있다. 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-종료 이벤트(308)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 그러나, 콘텐츠 아이템(155)은 함수(260)을 트리거링하기 위해 온-클릭 이벤트 핸들러로 구성될 수 있다. 온-클릭 이벤트(310)를 검출하는 것에 응답하여, 콘텐츠 아이템(155)은 함수(260)의 등록(312)(예를 들어, 다른 정보 리소스를 탐색하기 위한 "ExitAPI.exit()")을 수행할 수 있다. 애플리케이션(145)은 함수(260)의 실행(314)(예를 들어, 다른 정보 리소스로의 탐색)을 수행할 수 있다.
프로세스(305A) 하에서, 기능들은 온-클릭 이벤트(310)까지 프로세스(300A)와 유사하거나 동일할 수 있다. 이때, 온-클릭 이벤트(310)는 인터렉션 검증 스크립트(160)를 통해 원래의 온-클릭 이벤트 핸들러에 앞서 우선 전달될 수 있다. 이와 같이, 등록(312)은 인터렉션 검증 스크립트(160)에 의한 프로세싱에 후속하여 발생할 수 있다. 인터렉션 검증 스크립트(160)에 따르면, 콘텐츠 아이템(155)은 후속 인터렉션 이벤트를 대기하기 위해 타이머(316)를 시작할 수 있다. 애플리케이션(145)은 또한 콘텐츠 아이템(155)의 온-클릭 이벤트 핸들러에 전달하기 위해 사용자에 의한 릴리스(306)를 다른 온-클릭 이벤트(318)로 변환할 수 있다. 온-클릭 이벤트(318)의 검출에 따라, 온-클릭 이벤트 핸들러는 함수(260)의 등록(312')을 수행할 수 있다. 인터렉션 검증 스크립트(160)가 타이머(316)의 시작 및 등록(312 ')이 미리 결정된 시간 윈도우(예컨대, 200ms) 내에 있다고 결정하면, 인터렉션 검증 스크립트(160)는 애플리케이션(145)으로 하여금 함수(260)의 실행(314')을 수행하게 할 수 있다.
이제 도 3b를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하는 프로세스에 대한 순서도가 도시된다. 개요에서, 프로세스(300B)는 인터렉션 검증 스크립트(160)없이 애플리케이션(150) 및 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(305B)는 애플리케이션(150) 및 인터렉션 검증 스크립트(160)를 갖는 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 도 3a에서 구체화된 프로세스(300A 및 305A)와 같이, 프로세스(300B 및 305B)에서, 콘텐츠 아이템(155)의 온-클릭 이벤트 핸들러는 미리 결정된 함수를 수행하도록 함수(260)을 트리거링하도록 구성될 수 있다. 추가로, 인터렉션 검증 스크립트(160)는 온-클릭 이벤트 핸들러를 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러에 첨부했을 수 있다.
프로세스(300B) 하에서, 클라이언트 디바이스(125)의 사용자는 정보 리소스(150) 내에 제시된 콘텐츠 아이템(155)의 렌더링에 대응하는 터치스크린 상의 포인트에 대한 터치(302)를 수행할 수 있다. 애플리케이션(145)은 터치(302)를 터치-시작 이벤트(304)로 변환하여 콘텐츠 아이템(155)으로 전달할 수 있다. 콘텐츠 아이템(155)의 터치-시작 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-시작 이벤트(322)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 이어서, 클라이언트 디바이스(125)의 사용자는 터치스크린상의 한 포인트에서 다른 포인트로 이동함으로써 스크롤(324)을 수행할 수 있다. 터치(320)의 릴리스(326) 및 클라이언트 디바이스(125)의 터치스크린으로부터 후속 스크롤(324)에 따라, 애플리케이션(145)은 릴리스(326)를 터치-종료 이벤트(328)로 변환할 수 있다. 터치(320) 및 릴리스(326)는 클라이언트 디바이스(125)의 터치 스크린과의 사용자에 의한 동일한 인터렉션의 일부일 수 있다. 릴리스(326) 이전에 스크롤(324)이 발생했기 때문에 온-클릭 이벤트가 트리거링되지 않을 수 있다. 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-종료 이벤트(308)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 콘텐츠 아이템(155)이 온-터치 이벤트(328)가 아닌 온-클릭 이벤트에 응답하여 함수(260)을 트리거링하도록 구성되었기 때문에, 프로세스(305B)는 프로세스(300B)와 유사할 수 있다.
이제 도 3c를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하는 프로세스에 대한 순서도가 도시된다. 개요에서, 프로세스(300C)는 인터렉션 검증 스크립트(160)없이 애플리케이션(150) 및 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(305C)는 애플리케이션(150) 및 인터렉션 검증 스크립트(160)를 갖는 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(300B 및 305B) 둘 모두에서, 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러는 미리 결정된 함수를 수행하도록 함수(260)을 트리거링하도록 구성될 수 있다. 인터렉션 검증 스크립트(160)는 터치-종료 이벤트 핸들러를 콘텐츠 아이템(155)의 온-클릭 이벤트 핸들러에 첨부했을 수 있다.
프로세스(300C) 하에서, 클라이언트 디바이스(125)의 사용자는 정보 리소스(150) 내에 제시된 콘텐츠 아이템(155)의 렌더링에 대응하는 터치스크린 상의 포인트에 대한 터치(340)를 수행했을 수 있다. 애플리케이션(145)은 터치(340)를 터치-시작 이벤트(342)로 변환하여 콘텐츠 아이템(155)으로 전달할 수 있다. 콘텐츠 아이템(155)의 터치-시작 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-시작 이벤트(340)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 클라이언트 디바이스(125)의 터치스크린으로부터 터치(340)의 릴리스(344)에 따라, 애플리케이션(145)은 릴리스(344)를 터치-종료 이벤트(346) 및 터치-종료 이벤트(346)에 후속하는 온-클릭 이벤트(348)로 변환할 수 있다. 터치(340) 및 릴리스(344)는 클라이언트 디바이스(125)의 터치 스크린과의 사용자에 의한 동일한 인터렉션의 일부일 수 있다. 터치-종료 이벤트(346)를 검출하는 것에 응답하여 터치-종료 이벤트 핸들러가 함수(260)를 트리거링하도록 구성되었을 수 있으므로, 콘텐츠 아이템(155)은 함수(260)의 등록(350)(예를 들어, 다른 정보 리소스를 탐색하기 위한 "ExitAPI.exit()")을 수행할 수 있다. 애플리케이션(145)은 함수(260)의 실행(352)(예를 들어, 다른 정보 리소스로의 탐색)을 수행할 수 있다. 대조적으로, 온-클릭 이벤트 핸들러에 함수(260)의 구성이 결여되었을 수 있으므로, 콘텐츠 아이템(155)은 후속 온-클릭 이벤트(348)를 무시할 수 있다. 사용자의 관점에서, 함수(260)의 트리거링은 온-클릭 이벤트 핸들러 대신 터치-종료 이벤트 핸들러에 연결되기 때문에, 함수(260)의 실행(352)은 조기에 나타나고 예상치 못한 것일 수 있다.
프로세스(305C) 하에서, 기능들은 터치-종료 이벤트(346)까지 프로세스(300B)와 유사하거나 동일할 수 있다. 이때, 터치-종료 이벤트(346)는 인터렉션 검증 스크립트(160)를 통해 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러에 전달될 수 있다. 터치-종료 이벤트(346)를 검출하는 것에 응답하여, 콘텐츠 아이템(155)은 함수(260)의 호출의 등록(350')을 수행할 수 있고, 인터렉션 확인 스크립트(160)에 따라, 첨부된 이벤트 핸들러 중 하나에 대응하는 다른 인터렉션 이벤트를 대기하는 타이머를 시작할 수 있다. 후속 온-클릭 이벤트(348)가 수신되면, 콘텐츠 아이템(155)은 등록(350')의 타이밍과 온-클릭 이벤트(348)의 수신의 비교(354)를 수행할 수 있다. 함수(260)의 호출의 등록(350') 및 온-클릭 이벤트(348)의 수신이 미리 결정된 시간 윈도우(예를 들어, 1500ms) 내에 발생한 것으로 결정되면, 인터렉션 검증 스크립트(160)는 애플리케이션(145)으로 하여금 함수(260)의 실행(352')을 수행하게 할 수 있다. 이러한 방식으로, 함수(260)의 조기 또는 예기치 않은 트리거링이 방지될 수 있다.
이제 도 3d를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하는 프로세스에 대한 순서도가 도시된다. 개요에서, 프로세스(300D)는 인터렉션 검증 스크립트(160)없이 애플리케이션(150) 및 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 프로세스(305D)는 애플리케이션(150) 및 인터렉션 검증 스크립트(160)를 갖는 함수(260)과 관련하여 순차적으로 도시된 콘텐츠 아이템(155)의 기능을 포함할 수 있다. 도 3c에서 구체화된 프로세스(300C 및 305C)와 같이, 프로세스(300D 및 305D)에서, 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러는 미리 결정된 함수를 수행하도록 함수(260)을 트리거링하도록 구성될 수 있다. 인터렉션 검증 스크립트(160)는 터치-종료 이벤트 핸들러를 콘텐츠 아이템(155)의 온-클릭 이벤트 핸들러에 첨부했을 수 있다.
프로세스(300D) 하에서, 클라이언트 디바이스(125)의 사용자는 정보 리소스(150) 내에 제시된 콘텐츠 아이템(155)의 렌더링에 대응하는 터치스크린 상의 포인트에 대한 터치(360)를 수행했을 수 있다. 애플리케이션(145)은 터치(360)를 터치-시작 이벤트(362)로 변환하여 콘텐츠 아이템(155)으로 전달할 수 있다. 콘텐츠 아이템(155)의 터치-시작 이벤트 핸들러는 함수(260)의 구성이 결여될 수 있기 때문에, 콘텐츠 아이템(155)은 터치-시작 이벤트(362)를 무시하거나 함수(260)와 상이한 다른 동작을 수행할 수 있다. 이어서, 클라이언트 디바이스(125)의 사용자는 터치스크린상의 한 포인트에서 다른 포인트로 이동함으로써 스크롤(364)을 수행할 수 있다. 터치(360)의 릴리스(366) 및 클라이언트 디바이스(125)의 터치스크린으로부터 후속 스크롤(364)에 따라, 애플리케이션(145)은 릴리스(366)를 터치-종료 이벤트(368)로 변환할 수 있다. 터치(360) 및 릴리스(366)는 클라이언트 디바이스(125)의 터치 스크린과의 사용자에 의한 동일한 인터렉션의 일부일 수 있다. 터치-종료 이벤트(346)를 검출하는 것에 응답하여 터치-종료 이벤트 핸들러가 함수(260)를 트리거링하도록 구성되었을 수 있으므로, 콘텐츠 아이템(155)은 함수(260)의 등록(370)(예를 들어, 다른 정보 리소스를 탐색하기 위한 "ExitAPI.exit()")을 수행할 수 있다. 애플리케이션(145)은 함수(260)의 실행(372)(예를 들어, 다른 정보 리소스로의 탐색)을 수행할 수 있다. 릴리스(366) 이전에 스크롤(364)이 발생했기 때문에 온-클릭 이벤트가 트리거링되지 않을 수 있다. 사용자의 관점에서, 함수(260)의 트리거링은 온-클릭 이벤트 핸들러 대신 터치-종료 이벤트 핸들러에 연결되기 때문에, 함수(260)의 실행(352)은 조기에 나타나고 예상치 못한 것일 수 있다.
프로세스(305D) 하에서, 기능들은 터치-종료 이벤트(368)까지 프로세스(300B)와 유사하거나 동일할 수 있다. 이때, 터치-종료 이벤트(368)는 인터렉션 검증 스크립트(160)를 통해 콘텐츠 아이템(155)의 터치-종료 이벤트 핸들러에 전달될 수 있다. 터치-종료 이벤트(368)를 검출하는 것에 응답하여, 콘텐츠 아이템(155)은 함수(260)의 호출의 등록(370')을 수행할 수 있고, 인터렉션 확인 스크립트(160)에 따라, 첨부된 이벤트 핸들러 중 하나에 대응하는 다른 인터렉션 이벤트를 대기하는 타이머를 시작할 수 있다. 애플리케이션(145)으로부터 전달된 후속 온-클릭 이벤트가 없기 때문에, 인터렉션 검증 스크립트(160)는 미리 결정된 시간 윈도우(예를 들어, 1500ms) 내에 검출된 다른 인터렉션 이벤트가 없음을 결정할 수 있다. 따라서, 인터렉션 검증 스크립트(160)는 애플리케이션(145)으로 하여금 함수(260)의 실행을 제한하게 수 있다. 이러한 방식으로, 함수(260)의 조기 또는 예기치 않은 트리거링이 방지될 수 있다.
이제 도 4a 및 4b를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하기 위한 방법(400)이 도시된다. 방법(400)과 관련하여 본 명세서에 기술된 기능은 도 1에 도시된 시스템(100)(예를 들어, 데이터 프로세싱 시스템(110), 콘텐츠 제공자(115), 콘텐츠 퍼블리셔(120) 및 클라이언트 디바이스(125)) 또는 도 6에 도시된 컴퓨팅 디바이스 또는 그것들의 임의의 조합에 의해 수행되거나 실행될 수 있다.
데이터 프로세싱 시스템은 데이터베이스(405)로부터 콘텐츠 아이템을 식별할 수 있다. 데이터 프로세싱 시스템은 미리 지정된 함수(410)로 구성된 이벤트 핸들러를 식별할 수 있다. 미리 지정된 함수는 데이터 프로세싱 시스템에 의해 검색될 미리 지정된 함수들의 세트 중 하나 일 수 있다. 일부 구현예에서, 함수는 API에 의해 정의될 수 있다. 데이터 프로세싱 시스템은 함수가 없는 이벤트 핸들러를 식별할 수 있다(415). 구성이 없는 이벤트 핸들러는 함수의 구성이 있는 이벤트 핸들러와 다를 수 있다.
데이터 프로세싱 시스템은 이벤트 핸들러가 미리 정의된 핸들러들의 리스트 중 하나와 매칭되는지 여부를 결정할 수 있다(420). 미리 정의된 리스트에서 각 이벤트 핸들러는 컴퓨팅 디바이스의 I/O 디바이스 상의 단일의 물리적 인터렉션(예를 들어, 터치-시작 이벤트, 터치-종료 이벤트 및 온-클릭 이벤트)과 연관될 수 있다. 이벤트 핸들러가 미리 정의된 핸들러들의 리스트 중 하나와 매칭되는 것으로 결정되면, 데이터 프로세싱 시스템은 구성이 없는 이벤트 핸들러를 첨부할 수 있다(425). 일부 구현예에서, 데이터 프로세싱 시스템은 구성이 없는 이벤트 핸들러 및 구성이 있는 이벤트 핸들러를 콘텐츠 아이템에 삽입될 스크립트에 첨부할 수 있다. 어느 경우이든, 데이터 프로세싱 시스템은 더 많은 이벤트 핸들러들이 있는지 여부를 결정할 수 있다(430). 분석될 이벤트 핸들러들이 더 있으면, 데이터 프로세싱 시스템은 415-430 단계의 기능을 반복할 수 있다.
분석될 이벤트 핸들러들이 더 이상 없으면, 데이터 프로세싱 시스템은 첨부가 있는 스크립트를 콘텐츠 아이템의 코드 최상부에 삽입할 수 있다(435). 이러한 방식으로, 콘텐츠 아이템이 컴퓨팅 디바이스에 의해 판독되고 실행될 때, 스크립트는 콘텐츠 아이템에 원래 프로그래밍된 이벤트 핸들러에 대응하는 코드 이전에 판독될 수 있다. 데이터 프로세싱 시스템(400)은 삽입된 스크립트를 가지는 콘텐츠 아이템을 컴퓨팅 디바이스에 제공할 수 있다(440). 콘텐츠 아이템은 이어서 컴퓨팅 디바이스 상에 제시된 정보 리소스에 삽입될 수 있다.
이제 도 5a를 참조하면 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하기 위한 방법(500)이 도시된다. 방법(500)과 관련하여 본 명세서에 기술된 기능은 도 1에 도시된 시스템(100), 도 2에 도시된 시스템(200) 또는 도 6에 도시된 컴퓨팅 디바이스 또는 그것들의 임의의 조합에 의해 수행되거나 실행될 수 있다. 도 4와 관련하여, 방법(500)은 단계(440)로부터 방법(400)의 계속일 수 있다. 방법(500)은 제1 검출된 인터렉션 이벤트에 대한 콘텐츠 아이템의 이벤트 핸들러가 미리 정의된 액션을 수행하기 위한 함수의 구성이 없을 수 있는 시나리오에 대응할 수 있다.
컴퓨팅 디바이스는 인터렉션 이벤트를 검출할 수 있다(502). 인터렉션 이벤트에 대한 콘텐츠 아이템의 이벤트 핸들러에 함수의 구성이 결여될 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 검출된 인터렉션 이벤트가 첨부된 이벤트 핸들러 세트 중 하나에 대응한다고 결정할 수 있다. 미리 정의된 세트의 각 이벤트 핸들러는 컴퓨팅 디바이스의 사용자에 의한 단일 인터렉션(예를 들어, 터치-시작 이벤트, 터치-종료 이벤트 및 온-클릭 이벤트)과 관련될 수 있다. 컴퓨팅 디바이스는 함수 호출이 등록되었는지 여부를 결정할 수 있다(504). 함수는 검출된 인터렉션 이벤트에 대응하는 이벤트 핸들러와 상이한 다른 이벤트 핸들러에 대해 구성될 수 있다. 함수 호출이 등록되면, 컴퓨팅 디바이스는 시간 임계치를 제1 값으로 설정할 수 있다(506). 제1 값은 50ms 내지 350ms의 범위일 수 있다. 한편, 함수 호출이 등록되지 않은 경우, 컴퓨팅 디바이스는 시간 임계치를 제2 값으로 설정할 수 있다(508). 제2 값은 1000ms 내지 2000ms의 범위일 수 있다. 제1 값 및 제2 값 둘 모두는 함수 호출의 등록과 인터렉션 이벤트의 검출 사이에 경과된 시간의 양을 고려하도록 설정될 수 있다.
컴퓨팅 디바이스는 인터렉션 이벤트의 시간이 제1 값만큼 함수 호출의 시간에 앞서는지 여부를 결정할 수 있다(510). 컴퓨팅 디바이스는 인터렉션의 검출에 응답하여 인터렉션 이벤트의 시간을 식별할 수 있다. 컴퓨팅 디바이스는 함수 호출의 등록에 응답하여 함수 호출의 시간을 식별할 수 있다. 컴퓨팅 디바이스는 현재 시간이 제2 값만큼 인터렉션 이벤트의 시간에 앞서는지 여부를 결정할 수 있다(512). 일부 구현예에서, 컴퓨팅 디바이스는 인터렉션 이벤트의 검출 시간으로부터 시작하는 현재 시간을 추적하기 위해 타이머를 유지할 수 있다. 컴퓨팅 디바이스는 제2 값으로 설정된 시간 임계치 내에서 인터렉션 이벤트의 검출을 대기할 수 있다. 현재 시간이 제2 값만큼 인터렉션 이벤트의 시간 이후인 경우, 컴퓨팅 디바이스는 함수 호출의 등록을 모니터링할 수 있다(514). 함수 호출의 등록이 검출되지 않으면, 컴퓨팅 디바이스는 단계 512 및 514의 기능을 반복할 수 있다.
인터렉션 이벤트의 시간이 제1 값에 의한 함수 호출 시간 이후이거나 현재 시간이 제2 값에 의한 인터렉션 이벤트의 시간 이후인 경우, 컴퓨팅 디바이스는 인터렉션 이벤트를 무시할 수 있다(516). 컴퓨팅 디바이스는 또한 등록된 경우, 함수 호출의 실행을 방지할 수 있다. 반면에, 인터렉션 이벤트의 시간이 제1 값만큼 함수 호출의 시간 이후이거나 현재 시간이 제2 값만큼 인터렉션 이벤트의 시간에 앞서는 경우 함수 호출의 등록이 검출되면, 컴퓨팅 디바이스는 함수 호출을 실행할 수 있다(518). 일부 구현예에서, 컴퓨팅 디바이스는 함수 호출의 실행을 허용할 수 있다.
이제 도 5b를 참조하면, 콘텐츠 아이템에 대해 수행된 인터렉션들을 검증하기 위한 방법(550)이 도시된다. 방법(550)과 관련하여 본 명세서에 기술된 기능은 도 1에 도시된 시스템(100), 도 2에 도시된 시스템(200) 또는 도 6에 도시된 컴퓨팅 디바이스 또는 그것들의 임의의 조합에 의해 수행되거나 실행될 수 있다. 도 4와 관련하여, 방법(550)은 단계(440)로부터 방법(400)의 계속일 수 있다. 방법(550)은 전술한 방법(500)과 유사할 수 있고, 검출된 인터렉션 이벤트에 대응하는 이벤트 핸들러가 미리 결정된 액션을 수행하기 위해 함수 호출을 트리거링하도록 구성된 시나리오에 대한 것일 수 있다.
컴퓨팅 디바이스는 인터렉션 이벤트를 검출할 수 있다(552). 인터렉션 이벤트의 검출과 관련하여, 컴퓨팅 디바이스는 함수 호출을 등록할 수 있다(554). 인터렉션 이벤트에 대한 콘텐츠 아이템의 이벤트 핸들러는 미리 정의된 액션을 수행하기 위한 함수로로 구성될 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 검출된 인터렉션 이벤트가 함수로 구성된 이벤트 핸들러에 대응한다고 결정할 수 있다. 일부 구현예에서, 컴퓨팅 디바이스는 등록시 함수의 실행을 방지할 수 있다. 컴퓨팅 디바이스는 첨부된 인터렉션 이벤트가 검출되는지 여부를 결정할 수 있다(556). 첨부된 인터렉션 이벤트는 미리 정의된 첨부된 이벤트 핸들러들의 세트 중 하나 일 수 있다. 미리 정의된 세트의 각 이벤트 핸들러는 컴퓨팅 디바이스의 사용자에 의한 단일 인터렉션(예를 들어, 터치-시작 이벤트, 터치-종료 이벤트 및 온-클릭 이벤트)과 관련될 수 있다. 첨부된 인터렉션 이벤트가 검출되면, 컴퓨팅 디바이스는 시간 임계치를 제1 값으로 설정할 수 있다(558). 제1 값은 1000ms 내지 2000ms의 범위일 수 있다. 반면에, 첨부된 인터렉션 이벤트가 검출되지 않으면, 컴퓨팅 디바이스는 시간 임계치를 제2 값으로 설정할 수 있다(560). 제2 값은 50ms 내지 350ms의 범위일 수 있다.
컴퓨팅 디바이스는 등록 시간이 제1 값만큼 첨부된 인터렉션 이벤트의 시간에 앞서는지 여부를 결정할 수 있다(562). 컴퓨팅 디바이스는 인터렉션의 검출에 응답하여 인터렉션 이벤트의 시간을 식별할 수 있다. 컴퓨팅 디바이스는 함수 호출의 등록에 응답하여 함수 호출의 시간을 식별할 수 있다. 컴퓨팅 디바이스는 현재 시간이 제2 값만큼 등록의 시간에 앞서는지 여부를 결정할 수 있다(564). 일부 구현예에서, 컴퓨팅 디바이스는 함수 호출의 등록의 검출 시점으로부터 시작하는 현재 시간을 추적하기 위해 타이머를 유지할 수 있다. 컴퓨팅 디바이스는 제2 값으로 설정된 시간 임계치 내에서 첨부된 인터렉션 이벤트의 검출을 대기할 수 있다. 현재 시간이 제2 값만큼 등록 시간에 후속하는 경우, 컴퓨팅 디바이스는 첨부된 인터렉션 이벤트를 모니터링할 수 있다(566).
함수 호출의 등록이 검출되지 않으면, 컴퓨팅 디바이스는 단계 564 및 566의 기능을 반복할 수 있다. 등록 시간이 제1 값만큼 인터렉션 이벤트 시간에 후속하거나 현재 시간이 제2 값만큼 등록 시간에 후속하는 경우, 컴퓨팅 디바이스는 인터렉션 이벤트를 무시할 수 있다(568). 컴퓨팅 디바이스는 또한 등록된 경우, 함수 호출의 실행을 방지할 수 있다. 반면에, 인터렉션 이벤트의 시간이 제1 값만큼 함수 호출의 시간에 앞서거나 현재 시간이 제2 값만큼 인터렉션 이벤트의 시간에 앞서는 경우 함수 호출의 등록이 검출되면, 컴퓨팅 디바이스는 함수 호출을 실행할 수 있다(570). 일부 구현예에서, 컴퓨팅 디바이스는 함수 호출의 실행을 허용할 수 있다.
도 6는 일부 구현예들에 따라 본 명세서에서 논의된 컴퓨터 시스템들(데이터 프로세싱 시스템(110) 및 그 컴포넌트들, 콘텐츠 제공자(115) 및 그 컴포넌트들, 콘텐츠 퍼블리셔(125) 및 그 컴포넌트들 및 클라이언트 디바이스(125) 및 그 컴포넌트들을 포함) 중 어느 하나를 구현하기 위해 이용될 수 있는 예시적 컴퓨터 시스템(600)의 일반적 아키텍처를 도시한다. 컴퓨터 시스템(600)은 디스플레이를 위해 네트워크(105)를 통해 정보를 제공하는데 사용될 수 있다. 도 6의 컴퓨터 시스템(600) 도 5의 컴퓨터 시스템(600)은 메모리(625)에 통신적으로 연결된 하나 이상의 프로세서들(620), 하나 이상의 통신 인터페이스(605), 및 하나 이상의 출력 디바이스들(610)(예를 들어, 하나 이상의 디스플레이 유닛들) 및 하나 이상의 입력 디바이스들(615)을 포함한다. 프로세서(620)는 데이터 프로세싱 시스템(110) 또는 데이터 프로세싱 시스템(110)의 다른 컴포넌트들에 포함될 수 있다. 프로세서(620)는 콘텐츠 제공자들(115)을 포함할 수 있다. 프로세서(620)는 콘텐츠 퍼블리셔들(120)을 포함할 수 있다. 프로세서(620)는 클라이언트 디바이스(125) 또는 클라이언트 디바이스(125)의 다른 컴포넌트들에 포함될 수 있다.
도 6의 컴퓨터 시스템(600)에서, 메모리(625)는 임의의 컴퓨터 판독가능 저장 매체를 포함할 수 있고, 각각의 시스템들에 대해 본 명세서에서 기술된 다양한 기능들을 구현하기 위한 프로세서-실행가능 명령어들과 같은 컴퓨터 명령어들 뿐만 아니라 그와 연관된 임의의 데이터, 그에 의해 생성된 임의의 데이터 또는 통신 인터페이스(들) 또는 입력 디바이스(들)(있는 경우)을 통해 수신된 임의의 데이터를 저장할 수 있다. 다시 도 1의 시스템(110)을 참조하면, 데이터 프로세싱 시스템(110)은 하나 이상의 콘텐츠 아이템들의 사용가능성과 관련된 정보를 저장하는 메모리(625)를 포함할 수 있다. 메모리(625)는 데이터베이스(140)를 포함할 수 있다. 도 6에 도시된 프로세서(들)(620)은 메모리(625)에 저장된 명령어들을 실행하는데 사용될 수 있고, 그렇게 함으로써, 명령어들의 실행에 따라 프로세싱되거나 생성된 다양한 정보를 메모리로부터 판독하거나 메모리에 기록할 수 있다.
도 6에 도시된 컴퓨터 시스템(600)의 프로세서(620)는 또한 명령어들의 실행에 따라 다양한 정보를 전송 또는 수신하도록 통신 인터페이스(들)(605)에 통신적으로 연결되거나 제어될 수 있다. 예를 들어, 통신 인터페이스(들)(605)는 유선 또는 무선 네트워크, 버스, 또는 기타 통신 수단에 연결될 수 있으며, 따라서 컴퓨터 시스템(600)이 다른 디바이스들(예를 들어, 다른 컴퓨터 시스템들)에 정보를 전송하거나 또는 그로부터 정보를 수신하게 할 수 있다. 도 1, 2 또는 6의 시스템에서 명시적으로 도시되지 않았지만, 하나 이상의 통신 인터페이스는 시스템(600)의 컴포넌트들 간의 정보 흐름을 용이하게 한다. 일부 구현예에서, 통신 인터페이스(들)는 컴퓨터 시스템(600)의 적어도 일부 양태들에 대한 액세스 포털로서 웹사이트를 제공하도록(예를 들어, 다양한 하드웨어 컴포넌트들 또는 소프트웨어 컴포넌트들을 통해) 구성될 수 있다. 통신 인터페이스(605)의 예는 사용자가 데이터 프로세싱 시스템(110)과 통신할 수 있는 사용자 인터페이스(예를 들어, 웹페이지)를 포함한다.
도 6에 도시된 컴퓨터 시스템(600)의 출력 디바이스들(610)은 예를 들어, 명령어들의 실행과 관련하여 다양한 정보가 보여 지거나 인식될 수 있도록 제공될 수 있다. 입력 디바이스(들)(615)은 예를 들어, 사용자가 수동 조절을 하거나, 선택을 하거나, 데이터를 입력하거나 또는 명령어들의 실행 중에 프로세서와 다양한 방식으로 인터렉션할 수 있도록 제공될 수 있다. 본 명세서에서 논의된 다양한 시스템들에 이용될 수 있는 일반적인 컴퓨터 시스템 아키텍처에 관한 추가 정보가 본 명세서에서 더 제공된다.
본 발명의 구현예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 구현예들은 하나 이상의 컴퓨터 프로그램들 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 엑세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지를 포함할 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트들 또는 매체(예를 들면, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 또는 그에 포함될 수 있다.
본 명세서에 개시된 구성들은 보다 전통적인 텔레비전 프로그래밍 소스들(예를 들어 케이블, 위성, 공중파 또는 기타 신호를 통해 수신됨)과 인터넷 연결을 통합하도록 구성된 프로세싱 모듈을 포함할 수 있는, 스마트 텔레비전 모듈(또는 연결된 텔레비전 모듈, 하이브리드 텔레비전 모듈 등)에서 구현될 수 있다. 스마트 텔레비전 모듈은 텔레비전 세트에 물리적으로 통합될 수 있거나 셋톱 박스, 블루레이 또는 다른 디지털 미디어 플레이어, 게임 콘솔, 호텔 텔레비전 시스템 및 다른 컴패니언 디바이스와 같은 별도의 디바이스를 포함할 수 있다. 스마트 텔레비전 모듈은 시청자가 웹, 로컬 케이블 TV 채널, 위성 TV 채널에서 또는 로컬 하드 드라이브에 저장된 비디오, 영화, 사진 및 기타 콘텐츠를 검색하고 찾을 수 있도록 구성될 수 있다. 셋톱 박스(STB) 또는 셋톱 유닛(STU)은 튜너를 포함하고 텔레비전 세트 및 외부 신호 소스에 연결될 수 있는 정보 기기 디바이스를 포함할 수 있으며, 그 신호는 콘텐츠로 변환되어 텔레비전 스크린 또는 기타 디스플레이 디바이스에 디스플레이될 수 있다. 스마트 텔레비전 모듈은 웹브라우저 및 복수의 스트리밍 미디어 서비스들, 연결된 케이블 또는 위성 미디어 소스, 다른 웹 "채널"들 등과 같은 복수의 상이한 어플리케이션들에 대한 아이콘들을 포함하는 홈스크린 또는 최상위 레벨 스크린을 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈은 또한 사용자에게 전자적 프로그래밍 가이드를 제공하도록 구성될 수 있다. 스마트 텔레비전 모듈에 대한 동반 어플리케이션은 모바일 컴퓨팅 디바이스에서 사용가능 프로그램에 관한 추가 정보를 사용자에게 제공하여 사용자가 스마트 텔레비전 모듈 등을 제어할 수 있게 동작가능할 수 있다. 일부 구현예에서, 상기 구성들은 랩톱 컴퓨터 또는 다른 개인용 컴퓨터, 스마트폰, 다른 모바일폰, 핸드헬드 컴퓨터, 태블릿 PC 또는 다른 컴퓨팅 디바이스에서 구현될 수 있다. 일부 구현예들에서, 본 명세서에 개시된 구성들은 (예를 들어, 다른 컴퓨팅 디바이스 또는 네트워크(105)와의) 인터넷 연결을 통합하도록 구성된 프로세싱 모듈을 포함할 수 있는 웨어러블 디바이스 또는 컴포넌트(예를 들어, 스마트 시계)에서 구현될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 데이터 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치", "데이터 프로세싱 시스템", "사용자 디바이스" 또는 "컴퓨팅 디바이스"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩, 다수의 칩들 또는 앞서 언급된 것들의 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다. 콘텐츠 아이템 평가기(130) 및 스크립트 삽입기(135)는 하나 이상의 데이터 프로세싱 장치, 컴퓨팅 디바이스 또는 프로세서를 포함하거나 공유할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 오브젝트로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들과 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 구현예들은 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들이 사용자와의 인터렉션을 제공하기 위해 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 포함할 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹 브라우저에 웹 페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 구현예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
시스템(600) 또는 시스템(100)과 같은 컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 예를 들어, 데이터 프로세싱 시스템(110)은 적어도 하나의 데이터 센터 또는 서버 팜에 위치된 복수의 서버들 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 구현예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 본 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 본 명세서에 기술된 시스템 및 방법의 특정한 구현예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 구현예의 맥락에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 구현예에서 조합하여 구현될 수 있다. 반대로, 단일 구현예의 맥락에서 기술된 다양한 구성들은 또한 다수의 구현예에서 개별적으로 또는 임의의 적합한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다.
특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 구현예에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다. 콘텐츠 아이템(130) 및 스크립트 삽입기(135)는 데이터 프로세싱 시스템(110)의 일부, 단일 모듈, 하나 이상의 프로세싱 모듈을 갖는 논리 디바이스, 하나 이상의 서버 또는 검색 엔진의 일부일 수 있다.
일부 예시적 구현 및 구현예들을 설명하였지만, 전술한 예는 예시적인 것이며 제한적인 것은 아니며 예시로서 제시되었다. 특히, 본 명세서에 제시된 많은 예들이 방법 동작들 또는 시스템 엘리먼트들의 특정 조합을 포함하지만, 그러한 동작들 및 엘리먼트들은 동일한 목적을 달성하기 위해 다른 방식으로 결합될 수 있다. 하나의 구현예와 관련하여 논의된 동작, 엘리먼트 및 구성들은 다른 구현 또는 구현예에서 유사한 역할로부터 배제되지 않는다.
본 명세서에서 사용된 문구 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. "포함(including)" "포함(comprising)" "포함(having)" "포함(containing)" "포함(involving)" "포함(characterized by)" "포함(characterized in that)" 및 본 명세서에서 이들의 변형들은 열거된 아이템들, 그 균등물 및 추가 아이템들뿐만 아니라 배타적으로 열거된 아이템들로 구성되는 대안적 구현예들을 포함하는 것을 의미한다. 일 구현예에서, 본 명세서에 기술된 시스템 및 방법은 설명된 엘리먼트들, 동작들 또는 컴포넌트들 중 하나, 하나 이상의 조합 또는 전부로 구성된다.
단수형으로 본 명세서에서 언급된 시스템 및 방법의 구현 또는 엘리먼트에 관한 참조는 이들 엘리먼트들 복수형을 포함하는 구현예들을 포함할 수 있고, 복수형으로 본 명세서에서 언급된 임의의 구현예 또는 엘리먼트에 대한 임의의 참조는 단수형 엘리먼트를 포함하는 구현예들을 포함할 수 있다. 단수 또는 복수 형태의 참조는 현재 개시된 시스템 또는 방법, 그들의 컴포넌트들, 동작 또는 엘리먼트를 단수 또는 복수 구성으로 제한하려는 것이 아니다. 임의의 정보, 동작 또는 엘리먼트에 기초한 임의의 동작 또는 엘리먼트에 대한 참조는 해당 동작 또는 엘리먼트가 적어도 부분적으로 임의의 정보, 동작 또는 엘리먼트에 기초하는 구현예를 포함할 수 있다.
본 명세서에 개시된 임의의 구현예는 임의의 다른 구현예와 결합될 수 있으며, "구현", "일부 구현", "대안적 구현", "다양한 구현", "하나의 구현" 등은 반드시 상호 배타적이지 않고, 구현예과 관련하여 기술된 특정한 구성, 구조 또는 특성이 적어도 하나의 구현예에 포함될 수 있음을 나타내는 것이다. 본 명세서에 사용된 용어들은 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 임의의 구현예는 본 명세서에 개시된 양태들 및 구현예들과 일관된 방식으로 임의의 다른 구현예와 포괄적으로 또는 배타적으로 결합될 수 있다.
"또는"에 대한 참조는 "또는"을 사용하여 기술된 임의의 용어가 기술된 용어들 중 하나, 하나 이상 및 전부를 나타낼 수 있도록 포괄적인 것으로 해석될 수 있다.
도면, 상세한 설명 또는 청구범위의 기술적 구성에 참조 부호가 있는 경우, 상기 참조 부호는 도면, 상세한 설명 및 청구 범위의 명료성을 증가시키는 목적으로만으로 포함되었다. 따라서, 참조 부호들 또는 그것들의 부재는 임의의 청구항 엘리먼트들의 범위에 대해 어떠한 제한 효과도 가지지 않는다.
본 명세서에 기술된 시스템 및 방법은 그 특성을 벗어나지 않고 다른 특정 형태로 구체화될 수 있다. 본 명세서에서 제공된 예시들은 콘텐츠 아이템들에 대해 수행된 인터렉션들을 검증하고 그에 대한 대응값을 이용하는 것에 관한 것이지만, 본 명세서에 기술된 시스템 및 방법은 다른 환경에 적용되는 것을 포함할 수 있다. 전술한 구현예들은 기술된 시스템 및 방법을 제한하는 것이라기 보다는 예시적인 것이다. 따라서, 본 명세서에 기술된 시스템 및 방법의 범위는 상술한 설명보다는 첨부된 청구범위에 의해 표시되며, 청구범위의 의미 및 범위 내에서의 변경들도 그 안에 포함된다.

Claims (20)

  1. 콘텐츠 아이템들에서 수행된 인터렉션들을 검증하는 방법으로서,
    하나 이상의 프로세서들을 갖는 데이터 프로세싱 시스템에 의해, 콘텐츠 아이템의 코드의 제1 부분에 인터렉션 검증 스크립트를 삽입하는 단계를 포함하며, 상기 인터렉션 검증 스크립트는:
    상기 콘텐츠 아이템과의 사용자의 인터렉션에 응답하여 생성된 제1 인터렉션 이벤트를 검출하고, 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 상기 스크립트에 전달되며, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시되며;
    상기 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별하고, 상기 함수 호출은 상기 애플리케이션이 제2 인터렉션 이벤트를 상기 콘텐츠 아이템에 전달하는 것에 응답하여 트리거링되며, 상기 제2 인터렉션 이벤트는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성되며;
    상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하고; 그리고
    상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하도록 구성되는 방법.
  2. 청구항 1에 있어서, 상기 인터렉션 검증 스크립트는:
    터치-시작 이벤트 및 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하고, 제1 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며;
    상기 제1 온-클릭 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하고, 상기 제2 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며; 그리고
    상기 제2 온-클릭 이벤트와 상기 제1 온-클릭 이벤트 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하도록 더 구성되는 방법.
  3. 청구항 1에 있어서, 상기 인터렉션 검증 스크립트는:
    상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 터치-종료 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하고, 상기 터치-종료 이벤트는 상기 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱되며, 상기 터치-종료 이벤트에 대한 상기 터치-종료 이벤트 핸들러는 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출로 구성되며;
    상기 터치-종료 이벤트를 검출함에 응답하여, 상기 미리 결정된 액션을 실행하지 않고, 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출을 등록하고; 그리고
    상기 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하도록 더 구성되며, 상기 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되는 방법.
  4. 청구항 1에 있어서, 상기 인터렉션 검증 스크립트는:
    상기 제1 인터렉션 이벤트의 검출에 응답하여, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다고 결정하고; 그리고
    상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정하도록 더 구성되는 방법.
  5. 청구항 1에 있어서, 상기 인터렉션 검증 스크립트는:
    상기 제1 인터렉션 이벤트에 대응하는 제1 유형의 인터렉션을 프로세싱하기 위한 제1 이벤트 핸들러를 통해 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 상기 제1 인터렉션 이벤트를 검출하고; 그리고
    상기 제1 유형의 인터렉션 및 상기 제2 인터렉션 이벤트에 대응하는 제2 유형의 인터렉션 중 적어도 하나를 프로세싱하기 위한 제2 이벤트 핸들러를 통해 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 상기 제2 인터렉션 이벤트를 검출하도록 더 구성되는 방법.
  6. 청구항 1에 있어서, 상기 인터렉션 검증 스크립트는 상기 애플리케이션으로 하여금 API(application program interface) 함수 호출을 통해 상기 미리 결정된 액션을 수행하게 하도록 더 구성되는 방법.
  7. 청구항 1에 있어서,
    상기 데이터 프로세싱 시스템에 의해, 상기 미리 결정된 액션을 수행하기 위한 복수의 미리 결정된 이벤트 핸들러들 중 하나와 일치하는 상기 콘텐츠 아이템의 코드의 제2 부분에서 상기 제2 인터렉션 이벤트를 프로세싱하기 위한 이벤트 핸들러를 식별하는 단계를 더 포함하며, 상기 이벤트 핸들러는 상기 미리 결정된 함수를 수행하도록 미리 구성되며;
    상기 인터렉션 검증 스크립트를 삽입하는 단계는 상기 이벤트 핸들러를 상기 콘텐츠 아이템의 코드의 제1 부분에서 미리 결정된 복수의 이벤트 핸들러들에 첨부하는 것을 포함하며, 상기 코드의 제1 부분은 상기 코드의 제2 부분의 실행 이전에 클라이언트에서 실행되는 상기 애플리케이션에 의해 실행될 것인 방법.
  8. 콘텐츠 아이템들에 대해 수행된 인터렉션들을 검증하기 위한 시스템으로서,
    콘텐츠 아이템의 코드의 제1 부분에 인코딩되고 하나 이상의 프로세서들에서 실행가능한 이벤트 검출기, 상기 이벤트 검출기는 상기 콘텐츠 아이템과의 사용자의 인터렉션에 응답하여 생성된 제1 인터렉션 이벤트를 검출하도록 구성되고, 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 스크립트에 전달되며, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시되며;
    상기 코드의 제1 부분에 인코딩되고 상기 하나 이상의 프로세서들에서 실행가능한 등록 로그기, 상기 등록 로그기는 상기 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별하도록 구성되고, 상기 함수 호출은 상기 애플리케이션이 제2 인터렉션 이벤트를 상기 콘텐츠 아이템에 전달하는 것에 응답하여 트리거링되도록 구성되며, 상기 제2 인터렉션 이벤트는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성되며; 그리고
    상기 코드의 제1 부분으로 인코딩되고 상기 하나 이상의 프로세서들에서 실행가능한 함수 활성화기를 포함하며, 상기 함수 활성화기는:
    상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하고, 그리고
    상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하도록 구성되는 시스템.
  9. 청구항 8에 있어서, 상기 이벤트 검출기는:
    터치-시작 이벤트 및 터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하고;
    상기 제1 온-클릭 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하도록 더 구성되며, 상기 제2 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며, 상기 제2 온-클릭 이벤트에 대한 상기 이벤트 핸들러는 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출로 구성되며; 그리고
    상기 등록 로그기는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 상기 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하도록 더 구성되는 시스템.
  10. 청구항 8에 있어서, 상기 이벤트 검출기는:
    터치-종료 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하도록 더 구성되며, 상기 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며;
    상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 터치-종료 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하고, 상기 터치-종료 이벤트는 상기 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱되며, 상기 터치-종료 이벤트에 대한 상기 터치-종료 이벤트 핸들러는 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출로 구성되며; 그리고
    상기 등록 로그기는 상기 터치-종료 이벤트 핸들러를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하도록 더 구성되는 시스템.
  11. 청구항 8에 있어서, 상기 이벤트 검출기는 상기 제1 인터렉션 이벤트를 복수의 첨부된 인터렉션 이벤트들로부터 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별하도록 더 구성되며, 상기 복수의 첨부된 인터렉션 이벤트들은 온-클릭 이벤트 및 터치-종료 이벤트들 중 적어도 하나를 포함하며; 그리고
    상기 함수 활성화기는 상기 제1 인터렉션 이벤트를 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별함에 응답하여, 상기 제1 인터렉션 이벤트를 검출하는 것과 연관된 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하도록 더 구성되는 시스템.
  12. 청구항 8에 있어서, 상기 함수 활성화기는:
    상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 선행한다고 결정하고;
    상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정하고; 그리고
    상기 제2 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하도록 더 구성되는 시스템.
  13. 청구항 8에 있어서, 상기 함수 활성화기는:
    상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 후속한다고 결정하고;
    상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 후속한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정하고; 그리고
    상기 제1 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하도록 더 구성되는 시스템.
  14. 청구항 8에 있어서, 상기 콘텐츠 아이템의 코드의 제1 부분에 인코딩된 상기 이벤트 검출기, 상기 등록 로그기 및 상기 함수 활성화기 중 적어도 하나는 상기 콘텐츠 아이템의 코드의 제2 부분의 실행 전에 상기 애플리케이션에 의해 실행가능한 시스템.
  15. 콘텐츠 아이템들에 대해 수행된 인터렉션들을 검증하는 방법으로서,
    콘텐츠 아이템의 코드의 제1 부분에 인코딩되고 하나 이상의 프로세서들에서 실행되는 인터렉션 검증기에 의해, 상기 콘텐츠 아이템과의 사용자의 인터렉션에 응답하여 생성된 제1 인터렉션 이벤트를 검출하는 단계, 상기 제1 인터렉션 이벤트는 정보 리소스 상에 상기 콘텐츠 아이템을 제시하도록 구성된 애플리케이션에 의해 스크립트에 전달되며, 상기 정보 리소스에서 상기 콘텐츠 아이템이 상기 콘텐츠 아이템과의 인터렉션을 검출하는 애플리케이션에 응답하여 제시되며;
    상기 인터렉션 검증기에 의해, 상기 콘텐츠 아이템의 코드의 제2 부분의 실행을 통해, 미리 결정된 액션을 수행하기 위한 함수 호출의 등록을 식별하는 단계, 상기 함수 호출은 상기 애플리케이션이 제2 인터렉션 이벤트를 상기 콘텐츠 아이템에 전달하는 것에 응답하여 트리거링되도록 구성되며, 상기 제2 인터렉션 이벤트는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성되며;
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하는 단계; 및
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트를 검출하는 것과 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하는 단계를 포함하는 방법.
  16. 청구항 15에 있어서, 상기 제1 인터렉션 이벤트를 검출하는 단계는 터치-시작 이벤트 및 터치-종료 이벤트에 후속하는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제1 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하는 것을 포함하며; 그리고
    상기 인터렉션 검증기에 의해, 상기 제1 온-클릭 이벤트에 후속하여 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하는 것을 더 포함하며, 상기 제2 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며, 상기 제2 온-클릭 이벤트에 대한 상기 이벤트 핸들러는 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출로 구성되며; 및
    상기 함수 호출의 등록을 식별하는 단계는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 상기 제2 온-클릭 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하는 것을 더 포함하는 방법.
  17. 청구항 15에 있어서, 상기 제1 인터렉션 이벤트를 검출하는 단계는 터치-종료 이벤트에 후속하는 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 온-클릭 이벤트를 포함하는 상기 제1 인터렉션 이벤트를 검출하는 것을 포함하며, 상기 온-클릭 이벤트는 상기 콘텐츠 아이템의 온-클릭 이벤트 핸들러에 의해 프로세싱되며; 그리고
    상기 인터렉션 검증기에 의해, 상기 콘텐츠 아이템과의 상기 사용자의 인터렉션에 응답하여 생성된 터치-종료 이벤트를 포함하는 상기 제2 인터렉션 이벤트를 검출하는 것을 더 포하며, 상기 터치-종료 이벤트는 상기 콘텐츠 아이템의 터치-종료 이벤트 핸들러에 의해 프로세싱되며, 상기 터치-종료 이벤트에 대한 상기 터치-종료 이벤트 핸들러는 상기 미리 결정된 액션을 수행하기 위한 상기 함수 호출로 구성되며; 및
    상기 함수 호출의 등록을 식별하는 단계는 상기 터치-종료 이벤트를 포함하는 상기 제2 인터렉션 이벤트의 검출에 응답하여, 상기 함수 호출의 등록을 식별하는 것을 더 포함하는 방법.
  18. 청구항 15에 있어서,
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트를 복수의 첨부된 인터렉션 이벤트들로부터 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별하는 단계, 상기 복수의 첨부된 인터렉션 이벤트들은 온-클릭 이벤트 및 터치-종료 이벤트들 중 적어도 하나를 포함하며; 그리고
    상기 미리 결정된 임계치가 상기 시간의 양보다 작다고 결정하는 단계는 상기 제1 인터렉션 이벤트를 상기 제2 인터렉션 이벤트와 페어링된 것으로서 식별함에 응답하여, 상기 제1 인터렉션 이벤트를 검출하는 것과 연관된 상기 함수 호출의 등록을 식별하는 것 사이의 시간의 양이 미리 결정된 임계치보다 작다고 결정하는 것을 더 포함하는 방법.
  19. 청구항 15에 있어서,
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 선행한다고 결정하는 단계; 및
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 선행한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정하는 단계를 더 포함하며; 그리고
    상기 애플리케이션으로 하여금 상기 미리 결정된 액션들 수행하게 하는 단계는 상기 제2 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하는 것을 더 포함하는 방법.
  20. 청구항 15에 있어서,
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록에 후속한다고 결정하는 단계; 및
    상기 인터렉션 검증기에 의해, 상기 제1 인터렉션 이벤트의 검출이 상기 함수 호출의 등록보다 후속한다는 결정에 기초하여 상기 미리 결정된 임계치를 설정하는 단계를 더 포함하며; 그리고
    상기 애플리케이션으로 하여금 상기 미리 결정된 액션들 수행하게 하는 단계는 상기 제1 인터렉션 이벤트의 검출에 후속하여 상기 시간의 양이 미리 결정된 임계치보다 작다는 결정에 응답하여, 상기 애플리케이션으로 하여금 상기 미리 결정된 액션을 수행하게 하는 것을 더 포함하는 방법.
KR1020207009368A 2018-03-28 2018-09-07 콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어 KR102392095B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/938,990 2018-03-28
US15/938,990 US10970139B2 (en) 2018-03-28 2018-03-28 Controlling the triggering of function calls from content items
PCT/US2018/049977 WO2019190587A1 (en) 2018-03-28 2018-09-07 Controlling the triggering of function calls from content items

Publications (2)

Publication Number Publication Date
KR20200046092A KR20200046092A (ko) 2020-05-06
KR102392095B1 true KR102392095B1 (ko) 2022-04-28

Family

ID=63684602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207009368A KR102392095B1 (ko) 2018-03-28 2018-09-07 콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어

Country Status (6)

Country Link
US (1) US10970139B2 (ko)
EP (1) EP3676709B1 (ko)
JP (1) JP6977155B2 (ko)
KR (1) KR102392095B1 (ko)
CN (1) CN111226198B (ko)
WO (1) WO2019190587A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017000569A1 (de) * 2017-01-23 2018-07-26 e.solutions GmbH Verfahren, Computerprogrammprodukt und Vorrichtung zum Ermitteln von Eingabebereichen an einer grafischen Benutzeroberfläche
US10783316B2 (en) 2018-02-26 2020-09-22 Servicenow, Inc. Bundled scripts for web content delivery
US11340964B2 (en) * 2019-05-24 2022-05-24 International Business Machines Corporation Systems and methods for efficient management of advanced functions in software defined storage systems
CN113867553B (zh) * 2020-06-15 2023-09-26 武汉斗鱼鱼乐网络科技有限公司 一种快速点击的处理方法、装置、存储介质及电子设备
US11816206B2 (en) * 2021-02-25 2023-11-14 Red Hat, Inc. Function pointer protection

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101094129B1 (ko) 2009-10-20 2011-12-14 주식회사 인프라웨어 명령어 수행 방법 및 명령어 수행 장치
US20140361982A1 (en) 2013-06-09 2014-12-11 Apple Inc. Proxy gesture recognizer
JP2016533609A (ja) 2013-12-24 2016-10-27 ドロップボックス, インコーポレイテッド モバイルデバイス上での、クラウドベースのコンテンツマネージメントシステムへのアクセスの提供

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275232B1 (en) 1998-12-14 2001-08-14 Sony Corporation Polymorphic event handling for zooming graphical user interface
ATE418760T1 (de) 2002-09-25 2009-01-15 Sap Ag Verfahren und rechnersystem zur ereignisbehandlung
CA2686995A1 (en) 2009-12-03 2011-06-03 Ibm Canada Limited - Ibm Canada Limitee Handling user-interface gestures in non-rectangular regions
CN103336787B (zh) * 2013-06-05 2017-07-07 百度在线网络技术(北京)有限公司 一种用于缩放网页的方法和装置
US20170045981A1 (en) * 2015-08-10 2017-02-16 Apple Inc. Devices and Methods for Processing Touch Inputs Based on Their Intensities
EP3249554A1 (en) * 2016-05-24 2017-11-29 Google LLC Systems and methods for client-side dynamic information resource activation and deactivation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101094129B1 (ko) 2009-10-20 2011-12-14 주식회사 인프라웨어 명령어 수행 방법 및 명령어 수행 장치
US20140361982A1 (en) 2013-06-09 2014-12-11 Apple Inc. Proxy gesture recognizer
JP2016533609A (ja) 2013-12-24 2016-10-27 ドロップボックス, インコーポレイテッド モバイルデバイス上での、クラウドベースのコンテンツマネージメントシステムへのアクセスの提供

Also Published As

Publication number Publication date
WO2019190587A1 (en) 2019-10-03
US10970139B2 (en) 2021-04-06
CN111226198A (zh) 2020-06-02
JP6977155B2 (ja) 2021-12-08
US20190303215A1 (en) 2019-10-03
JP2021504774A (ja) 2021-02-15
EP3676709A1 (en) 2020-07-08
CN111226198B (zh) 2023-09-12
KR20200046092A (ko) 2020-05-06
EP3676709B1 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
KR102392095B1 (ko) 콘텐츠 아이템들로부터 함수 호출들의 트리거링 제어
US11907360B2 (en) Systems and methods for deploying countermeasures against unauthorized scripts interfering with the rendering of content elements on information resources
KR102216628B1 (ko) 클라이언트 디바이스들에서 실행되는 어플리케이션들에 의한 컨텐츠 아이템들의 제시의 부적절한 구현을 검출하기 위한 시스템 및 방법
US8346889B1 (en) Event-driven module loading
CN108140196B (zh) 使用客户端生成的点击标识符减少内容项交互的时延的系统和方法
US9959192B1 (en) Debugging interface for inserted elements in a resource
US20230368250A1 (en) Systems and methods for dynamically inserting content item slots in an information resource
US10205678B2 (en) Systems and methods for client-side dynamic information resource activation and deactivation
US10257251B1 (en) Systems and methods for using a uniform resource locator to call for different types of content
CN110249324B (zh) 在多个网页上维护会话标识符以进行内容选择
US20140258372A1 (en) Systems and Methods for Categorizing and Measuring Engagement with Content
WO2015009337A1 (en) Systems and methods for reliably using ping to account for interactions with electronic content
US9319451B2 (en) Systems and methods for selecting an accounting technique for interactions with electronic content
US11089085B2 (en) Passing of data via deep links for application components

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant