Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

파이어폭스에서 button태그에 onclick이 안먹히는 문제

크로스브라우징에 대한 부분이다. 지금 멀 만들고 있는데 당장 급한 분위기는 아니고 혼자만들고 있고 해서 개인적인 욕심으로 XHTML을 지키고 브라우저 호환성을 좀 유지하면서 만들고 싶었다. 그래서 기본적인 기능 구현하면서 파이어폭스(Firefox)에서 테스트를 돌렸는데 특정버튼들이 먹히지 않는 문제점을 발견했다.


<script type="text/javascript">
    function testMethod()
    {
        document.location.href="file.asp";
    }
</script>

<button onclick="testMethod();">눌러</button>

(평소처럼 복사해 온게 아니라 틀리지 않았나 몰라.. ㅡ..ㅡ)

어쨌든 로직은 필요없으니 보자면 저런 구조다. 버튼을 클릭하면 자바스크립트 메서드가 호출되는 상황.

IE에서는 아무런 문제가 없었다. 그런데 파이어폭스에서는 아무런 동작도 되지 않았다. 계속적인 테스트.....

일단 펑션자체는 잘 먹었다. <a>로 태스트했더니 location.href는 잘 동작했는데 <button>에서만 동작을 안해서 처음에는 onclick가 안되는 줄 알았는데 또 다른 <button>에서 onclick으로 호출된 펑션이 폼.submit의 형태를 띄고 있는 건 또 잘 작동이 됐다.

location.href가 안되는거냐... onclick이 안되는거냐... 엄청 고민했다.. 찾고 또 찾고....

역시 구글링... 구글링으로 찾은 외국사이트가 날 살렸다. 해결법과 이유까지 확실히....

파폭에서 <button>은 기본적으로 submit의 형태로 동작을 한다. 그래서 submit이 있는 경우는 제대로 동작하지만 submit이 없으니 동작이 무시되어 버린 것이다.

해결책은 return false;가 있으면 된다. 펑션안에 있어도 되고.... 호출할 때 onclick="testMethod();return false;"와 같이 써주거나 onclick="return testMethod();"로 써주면 정상적으로 작동한다.


덧) 이거 하는데 2시간도 더 걸렸다.. ㅡ..ㅡ 근데 평소 올블에서의 분위기로 느껴지던 웹표준과 크로스브라우징.... 막상 자료를 찾으니까 자료가 거의 없다.. ㅠ..ㅠ 아직 내가 체감하는것 만큼의 중요한 이슈가 아닌건가? ㅡ..ㅡ
2007/11/09 00:29 2007/11/09 00:29

MS SQL 테이블을 SQL문으로 생성하기

순서로 얘기하자면 ERWin등을 통해서 모델링을 해서 쿼리를 생성해서 테입르을 만드는게 맞겠지만 간단한 거의 경우에는 꼭 그런 수순을 밟게 되는 것도 아니고 처음엔 모델링 했지만 이게 한번에 잘 되는 작업도 아니고 중간중간에 바로 디비를 수정하게 되는 경우도 생기고 어쨌든 간에 현재 사용하는 테이블에서 SQL쿼리를 생성해야 하는 경우가 있더란 말이지...

사용자 삽입 이미지


엔터프라이즈 관리자(2000이다)에서 해당 테이블에서 [모든 작업] - [SQL 스크립트 생성]에 들어간다.

사용자 삽입 이미지

그러면 현재 선택한 테입르이 "스크립팅될 개체"에 표시된다. 이곳에 나타난 것만 SQL로 생성한다.

위의 모두표시 버튼을 누르면 왼쪽의 pub의 개체라고 된 곳에 모든 테이블이 표시되고 필요한 것만 오른쪽으로 이동하면 된다. 서식이나 옵션을 보면 약간의 설정과 어떤 형태의 쿼리문으로 나오는지가 나오는데 특별한 경우가 아니면 크게 신경을 안써도 될것 같다.(사실은 잘 모르는 부분이라.. ㅎㅎ)


-- 생성된 SQL문
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[sales]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[sales]
GO

CREATE TABLE [dbo].[sales] (
    [stor_id] [char] (4) COLLATE Korean_Wansung_CI_AS NOT NULL ,
    [ord_num] [varchar] (20) COLLATE Korean_Wansung_CI_AS NOT NULL ,
    [ord_date] [datetime] NOT NULL ,
    [qty] [smallint] NOT NULL ,
    [payterms] [varchar] (12) COLLATE Korean_Wansung_CI_AS NOT NULL ,
    [title_id] [tid] NOT NULL
) ON [PRIMARY]
GO

위에가 이렇게 생성한 쿼리문이다. 필요한 다른 곳에서 이 쿼리를 실행하면 디비가 생성된다. 다만 데이터는 나가지 않고 오직 테이블을 생성하는 쿼리만 만든다.(현재로써는 데이터도 쿼리문으로 생성을 어떻게 하는지를 좀 고민하고 있는데.. 쩝;;;)
2007/11/04 01:48 2007/11/04 01:48