인터넷정보

onchang 이벤트 발생한적 있는지 검사하는 스크립트

알 수 없는 사용자 2007. 10. 18. 13:24
FF, IE외 기타 브라우저용

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3c.org/1999/xhtml">
  3. <head><title></title>
  4. <script type="text/javascript" language="javascript">
  5. //<![CDATA[
  6. var orig;
  7. var preventUnload = true;
  8. registerEvent(window, 'load', function () {
  9. orig = {
  10.      subject    : document.getElementById('fm_subject').value,
  11.      message : document.getElementById('fm_message').value,
  12.      poster     : document.getElementById('fm_poster').value
  13. };
  14. });
  15. registerEvent(window, 'beforeunload', function (e) {
  16. if (!e) e = window.event;
  17. curr = {
  18.      subject    : document.getElementById('fm_subject').value,
  19.      message : document.getElementById('fm_message').value,
  20.      poster     : document.getElementById('fm_poster').value
  21. };
  22. if (preventUnload &&
  23.      (curr.subject != orig.subject ||
  24.          curr.message != orig.message ||
  25.          curr.poster != orig.poster))
  26. {
  27.      e.returnValue = "바뀐 항목이 있습니다. 화면을 전환하시겠습니까?";
  28. }
  29. });
  30. function registerEvent(obj, ev, handler) {
  31. if (!(obj && ev && handler))
  32.      return;
  33. if (obj.addEventListener)
  34.      obj.addEventListener(ev, handler, false);
  35. else if (obj.attachEvent)
  36.      obj.attachEvent('on'+ev, handler);
  37. }
  38. // 이 함수는사용되지 않습니다. registerEvent() 함수를 작성하면서 같이 작성합니다.
  39. function unregisterEvent(obj, ev, handler) {
  40. if (!(obj && ev && handler))
  41.      return;
  42. if (obj.removeEventListener) {
  43.      try {
  44.          obj.removeEventListener(ev, handler, false);
  45.      }
  46.      catch (e) {};
  47. }
  48. else if (obj.detachEvent) {
  49.      try {
  50.          obj.detachEvent('on'+ev, handler);
  51.      }
  52.      catch (e) {};
  53. }
  54. }
  55. function doSubmit () {
  56. preventUnload = false;
  57. // ...
  58. return true;
  59. }
  60. //]]>
  61. </script>
  62. </head>
  63. <body>
  64. <form method="post" onSubmit="return doSubmit()">
  65. <input type="text" id="fm_subject" name="subject" />
  66. <input type="text" id="fm_message" name="message" />
  67. <input type="text" id="fm_poster" name="poster" />
  68. <input type="submit" value="확인" />
  69. </form>
  70. </body>
  71. </html>


    ----------------------------------------------
    나창호@Creative Web Engineering
반응형