그리스몽키로 특정 페이지에서 onkeypress 이벤트를 변경하려고 합니다.

bumworld의 이미지

그리스몽키로 특정 페이지에서 onkeypress 이벤트를 변경하려고 합니다.

현재 onkeypress에 aaaa 라는 함수가 적용되어 있습니다.
------------------------------------------------------------
function aaaa(e) {
}
document.onkeypress = aaaa;
------------------------------------------------------------

aaaa라는 함수가 문제가 있어 제가 원하는 함수로 변경하려고 하는데요.

------------------------------------------------------------
// ==UserScript==
// @name bumworld 단축키
// @name_en bumworld
// @namespace http://www.bumworld.pe.kr/
// @description bumworld 단축키
// @include http://www.bumworld.pe.kr/zboard/zboard.php*
// ==/UserScript==

document.addEventListener('onkeypress', function(e) {
var isIE = !!(window.attachEvent && !window.opera);
alert(isIE);
}, true);
------------------------------------------------------------

이런식으로 스크립트를 작성해서 등록했습니다.

그런데 등록후에도 계속해서 기존 aaaa 함수가 호출이 됩니다.

스크립트를 잘못작성한걸까요?

송효진의 이미지

document.onkeypress = aaaa;
이렇게 되어 있으니
document.onkeypress = null;
일단 이렇게 해야 하지 않을까요?

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

bumworld의 이미지

document.onkeypress = null;

이렇게 하거나
document.onkeypress = '';

이렇게 하면 Component is not available 오류가 발생합니다.

음...그냥 alert('test'); 이렇게 하면 호출 잘되는걸 봐서는

스크립트 자체는 적용이 되는게 맞구요...

다른 방법이 없을까요?

bumworld의 이미지

<script LANGUAGE="javascript">
var key = new Array();
key['0'] = "aaaa";
-->
</script>

페이지에 이렇게 선언되어 있습니다.

그런데 그리스몽키 스크립트에서 alert(key['0']); 하면

key is not defined 이라고 나옵니다.

아무래도 key변수에 접근을 못하는거 같은데 원래 접근 못하는게 맞나요?

JuEUS-U의 이미지

해보니까 안되는군요 = _=)...
그래도 workaround로

document.location.href="javascript:alert(key['0']);";

를 사용할 수 있습니다.
JuEUS-U의 이미지

Quote:
document.[event] = [function];

이 방법이 원래 그리 좋은 방법은 아닙니다 = _=);;
이벤트 리스너로 등록된걸 해제시켜야되는데,
위와같은 방법으로 할당된걸 해제시킨거는 한번도 못봤습니다 - _-);;

일단은

Quote:
document.[event]=(function(){});

이건 어떨까요.
bumworld의 이미지

document.removeEventListener('onkeypress', funName, false);

이방법으로 해제를 할려고해도 함수에 접근이 안되 사용이 안되네요..

이벤트에 함수를 덮어쓸려고해도 안되구요..ㅠ.ㅠ

다른 좋은 방법이 없을래나 모르겠네요..

송효진의 이미지

혹시 wrappedJSObject 문제 아닐까요?
document.wrappedJSObject.onkeypress = null;

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

Arcy의 이미지

그리스몽키에서는 보안상 원래 객체에 바로 접근하지 못하게 막아둡니다.

꼭 필요한 경우에만 unsafeWindow 를 사용하면 원래 함수를 수정 가능합니다.

http://wiki.greasespot.net/UnsafeWindow 참조하세요.

bumworld의 이미지

우선은 wrappedJSObject로 해결 했습니다.

역시나 보안문제였군요..흠..

document.wrappedJSObject.onkeypress = null;
document.wrappedJSObject.onkeypress = function(e) {

};

이런식으로 했는데 우선 동작은 잘 되네요..

답변 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.