아이폰이나 안드로이드폰에서 XE에 접속하면 모바일 페이지를 볼 수 있다.
물론 모바일 설정이 되어 있다면...모바일 설정은 여기 참고 => http://www.bek.me/442944

하지만 안타깝게도 1.4.4.1 버전을 쓰고 있는데 노키아 익스프레스뮤직에서 모바일 페이지가 보이지 않는다 ㅜㅜ
XpressEngine에서는 수정하였다고 하지만 그 수정이 아직 내 익뮤에 은총을 내리진 못하였다.

그래서 직접 수정하였다.
현재 사용하고 있는 기종은 Nokia XpressMusic N5800 모델이다.
이 기종에서 사용하고 있는 브라우저는 기본브라우저와 오페라 미니.

수정할 파일은 XpressEngine의 이슈트래커에서와 같이 xe/classes/mobile/Mobile.class.php 파일이다.
이 파일의 _isFromMobilePhone() 함수안(37번째 라인)에서 아래 부분을 추가해 준다.
if(preg_match('/(iPod|iPhone|Android|BlackBerry|SymbianOS|Opera Mini|Nokia|SCH\-M[0-9]+)/',$_SERVER['HTTP_USER_AGENT']))

이제는 내 익뮤에서도 모바일 페이지를 제대로 볼 수 있다.

아...꼬박 이틀동안 삽질했다 -_-;;;;
jQuery를 배워보고자 어제부터 즐겨하는 게임을 위해(WOW) PostgresSQL+PHP+jQuery로 간단한 프로그래밍을 시작하였다.

암튼!
jQuery로 AJAX와 XML 처리가 간단하다고 하여...요즘 트랜드라고도 하고...해서...
jQuery로 해당 부분을 시험삼아 개발하고 있는 중...
Iron(≒크롬)과 Firefox에서는 정상동작 하지만 IE(익스플로러)에서는 동작하지 않는 것을 발견하였다.

먼저 처리할 XML 문서는 다음과 같다.
<?xml version="1.0" encoding="UTF-8" ?><Users>
    <user id="1" userid="test2" name="체리" time_stamp="1259052018" />
    <user id="2" userid="test" name="테스트" time_stamp="1259052020" />
</Users>

이렇게 문서가 정상적으로 처리되는 것을 확인하였고 각 브라우저에서도 제대로 읽히는 것을 확인하였다.
하지만...다음의 자바스크립트 코드로 읽어보니...IE에서만 동작하지 않는 것이다.
$.ajax({
	type: "GET",
	url: "<?=$wow['path']?>/ajax/userlist.php",
	dayaType:"xml",
	success: processXML});

function processXML(xml){
	var i = 0;
	$(xml).find('user').each(function() {
		$("#userTable").append("<tr id=\"userTableRow_"+(i)+"\">"
		+"<td><a href=\"javascript:deleteRow('userTableRow_"+(i++)+"');\">삭제</a></td>"		+"<td>"+$(this).attr("userid")+"</td>"
		+"<td>"+$(this).attr("name")+"</td>"
		+"<td>"+$(this).attr("time_stamp")+"</td>"
		+"</tr>");
	});
	displayFootCaption('userTableFoot', $("#userTable tbody tr").length);}

이것저것 하다 알아보니 $(xml).find("user")에서 find() 함수가 동작하지 않는 것을 확인하였다..
왜 그럴까..왜 그럴까...무지하게 고민하고 책도 보고 인터넷도 찾아보고 하는 도중..
아래의 블로그를 찾아내었다.
결론을 말하면..
IE에서 해더 없이는 XML로 제대로 인식이 안 된다는 것이었다.
왜!!!!!!!!!! 왜!!!!!!! 그냥 문서를 직접 URL 타이핑 해서 읽을 땐 XML로 잘 인식을 했냔 말이다 ㅠㅠ

위의 블로그에 해결 방안들을 제시하고 있지만, XML 문서를 생성하는 소스를 수정하는 것이 제일 정직하고 확실한 방법인 것 같다.
아래와 같이 해더를 추가해 주면 된다.
PHP로 개발하고 있는 것이기에 아래와 같이...
header('content-type:application/xml; charset=utf-8');

PHP가 아니라 다른 언어로 개발 중이라면 위의 내용과 맞게 수정해 주면 된다.
단, 지금 개발 하는 것이 UTF-8로 개발하고 있기에 위의 코드가 나오는데..
euc_kr이나 다른 언어로 개발 중이라고 하면 해당 언어 코드로 변경을 해 주어야 하는 것은 당연!!

감사합니다. LazyGyu님! ^^
  1. Favicon of http://lazygyu.tistory.com BlogIcon LazyGyu 2009.11.25 20:10 신고

    제 포스팅이 도움이 되셨다니 제가 더 기쁘네요 ㅠㅠ

    • Favicon of http://www.specialguy.net BlogIcon 체리 2009.11.26 23:32 신고

      감사합니다. 덕분에 앓는이 뺀 기분이예요 ㅎㅎ

  2. ㅁㄴ 2011.04.03 04:37 신고

    헤더를 바꾸는것도 그렇고 링크 가서도 원하는 답을 얻었네요..감사합니다..

    • Favicon of http://www.specialguy.net BlogIcon 체리 2011.04.14 21:06 신고

      저도 해당 링크에서 많은 도움 받았습니다.
      감사합니다 ^^

  3. 베리굿 2012.07.07 23:27 신고

    큰 도움이 될 것 같습니다.

    해결된다면 많은 시간을 아낄수 있을것 같네요 ^^

동적으로 페이지를 구성하기 위하여 innerHTML을 사용하게 되는데,
FF 계열은 문제가 없으나 IE 계열에서 문제가 발생한다.
만일 innerHTML로 대입하려는 문자열에 form 태그가 존재한다면 innerHTML은 동작하지 않는다.

var oDiv = document.getElementById("testdiv");
oDiv.innerHTML = "<form><input type="text"></form>";  // 오류 발생
oDiv.innerHTML = "<input type="text">";                        // 정상

회피할 수 있는 방법은 없다.
innerHTML로 oDiv 객체 안에 다른 객체를 넣어서 그 객체의 innerHTML을 하더라도 오류가 발생한다.
import java.util.Locale;
import java.util.ResourceBundel;
위와 같이 먼저 사용하는 것들을 import.

ResourceBundel rb = ResourceBundel.getBundel("파일명", Locale.getDefault());
위와 같이 resourcebundel을 선언해 준다.
파일명은 classes 폴더를 기준으로 작성하면 된다.
예를들어 classes 디렉토리 아래 lang이란 폴더에 lang.properties라는 파일로 국제화를 제공한다면,
/lang/lang으로 적어주면 된다.
classes 디렉토리 상위에도 작성 가능한지 여부는 모르겠다.

MyException(new String(rb.getString("board.name").getBytes("8859_1"), "KSC5601"));
이런식으로 처리하면 한글 출력도 문제 없다.

내 환경 : properties 파일은 unix 파일로 되어 있고 서비스는 utf-8을 제공한다.
아래와 같은 메시지가 출력 된다면...

javax.servlet.ServletException:  
--- The error occurred in /sql/board.postgresql.xml. 
--- The error occurred while applying a parameter map. 
--- Check the ArticleProperties. 
--- Check the parameter mapping for the 'idnum' property. 
--- Cause: org.postgresql.util.PSQLException: The column index is out of range: 1, number of columns: 0.
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
com.lmsdev.core.BaseServlet.doPost(BaseServlet.java:40)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

ArticleProperties와 연결된 클래스에서 모든 변수에 값이 제대로 입력 되었는지 확인해 봐야 한다.

+ Recent posts