NOTICE 
전체 에 해당하는 글 : 118 개
2008/08/07 :: Ext2.2 Release (11)
2008/04/22 :: ExtJS 2.1 릴리즈
2008/04/16 :: RESTFul 한 ExtJS
2008/04/16 :: Extjs Qtips 사용하기 (2)
2008/04/15 :: HTML include하기
2008/04/15 :: XPATH 가이드
올바른 성장과 따뜻한 나눔이 있는 넥스트리








소스보기를 막는 코드는 여러가지가 있습니다.

하지만 소스보기를 막는 코드가 있다고 하더라도 조금만 관심을 가지면 소스는 100%볼 수가 있습니다. 그 어떤 HTML이던 소스보기는 100%차단할 수 없으며(100% 볼수 있음) 소스보기를 번거럽게 할 뿐(소스보기를 까다롭게)입니다.

인터넷의 특성상 소스는 100%오픈되어 있습니다.

네이버카페 역시 모든 소스를 볼수가 있습니다.

아래문서는 소스보기를 막는 코드들로써 어느정도 소스보기를 번거럽게 할 수 있지만 100%차단을 할 수 는 없습니다.

 

 

1. 마우스 오른쪽메뉴, 드래그, 선택복사 금지하기

<body oncontextmenu='return false' ondragstart='return false' onselectstart='return false'>

oncontextmenu='return false' : 마우스 오른쪽 메뉴 금지
ondragstart=return false : 드래그 금지
onselectstart='return false' : 선택복사 금지

참고 onkeydown="return false" 키보드 완전 금지


 

2. 마우스 오른쪽 버튼 클릭시 경고 메세지
<script language=JavaScript>function click() {if ((event.button==2) || (event.button==2)) {alert('죄송합니다. 오른쪽 마우스 금지입니다. - 태그인넷 ');}}document.onmousedown=click// --></script>

 

 

3. 프레임 소스보기 막기

<script language="JavaScript">
if(parent.frames.length <= 0) { top.location.href="http://tagin.net"; }
</script>

프레임을 쓰는 홈페이지에서 프레임 페이지가 아닌 하위 프레임으로 직접 들어갔을 때 http://tagin.net으로 이동하는 예제입니다
head에 넣어주세요

 

4. 새로고침(F5), 전체창(F11) 막기

<SCRIPT LANGUAGE="JavaScript">
<!-- www.tagin.net
function processKey()
{
        if( (event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82)) ||
        (event.keyCode >= 112 && event.keyCode <= 123) || event.keyCode == 8)
            {
        event.keyCode = 0;
        event.cancelBubble = true;
        event.returnValue = false;
            }
}
document.onkeydown = processKey;
-->
</script>

 

 

5. shift, ctrl (쉬프트, 컨트롤)키 클릭하면 경고메세지 띄우기

<script language="JavaScript">
<!-- www.tagin.net
function click() {
     if((event.ctrlKey) || (event.shiftKey)) {
       alert('키를 사용할 수 없습니다.');
     }
   }
document.onmousedown=click;
document.onkeydown=click;
-->
</script>

 
6. 동영상 마우스 오른쪽 버튼 막기

<embed src="http://tagin.net/js/1.wmv" EnableContextMenu="false" >

<object classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95' id='MediaPlayer1' width="580" height="387">
  <param name='AudioStream' value='-1'>
  <param name='AutoSize' value='false'>
  <param name='AutoStart' value='true'>
  <param name='AnimationAtStart' value='true'>
  <param name='AllowChangeDisplaySize' value='true'>
  <param name='BufferingTime' value='5'>
  <param name='DisplayBackColor' value='0'>
  <param name='DisplayForeColor' value='16777215'>
  <param name='Enabled' value='true'>
 
 <param name='EnableContextMenu' value='false'>
  <param name='EnableTracker' value='true'>
  <param name='Mute' value='false'>
  <param name='PlayCount' value='1'>
  <param name='Rate' value='1'>
  <param name='ShowCaptioning' value='1'>
  <param name='ShowControls' value='true'>
  <param name='ShowAudioControls' value='true'>
  <param name='ShowDisplay' value='false'>
  <param name='ShowGotoBar' value='false'>
  <param name='ShowPositionControls' value='true'>
  <param name='ShowStatusBar' value='false'>
  <param name='ShowTracker' value='true'>
  <param name='TransparentAtStart' value='false'>
  <param name='Volume' value='-110'>
  <param name="FileName" value="http://tagin.net/js/1.wmv">
  <param NAME="SAMIFileName" VALUE="자막주소">
</object>

동영상 태그(embed, object) 자세히 보기
 
7. 상태바의 링크 주소 감추기

<script language=JavaScript>
setInterval("x()",1);
function x(){window.status="태그인넷"}
</script>
 <A href="http://tagin.net">태그인넷</a>

다른 소스

<a href="http://tagin.net" onmouseover="self.status='태그인넷';return true" onmouseout="self.status=' 태그인넷';return true">링크 </a>

<head>
<script language="JavaScript">
<!--

function hidestatus()
{
window.status='태그인넷'
return true
}
if (document.layers)
document.captureEvents(Event.mouseover | Event.mouseout)
document.onmouseover=hidestatus
document.onmouseout=hidestatus

// -->
</script>
</head>

 
8. 익스플로러 6의 이미지 도구모음(저장버튼 등) 뜨는 것 막기.
<HEAD><META http-equiv="imagetoolbar" content="no"></HEAD>
 
9. 무단링크 금지 스크립트
<script language='JavaScript'>
//link1 과 link2 지정해 넣은 홈을 통해서 들어오지 않으면 무단링크 취급 기본홈페이지로 열리는 소스
var home_url="http://www.tagin.net";   // 기본 홈페이지
var link1="http://tagin.net/";
var link2="http://www.naver.com/";
if (document.referrer.indexOf(home_url)==-1 && document.referrer.indexOf(link1)==-1 && document.referrer.indexOf(link2)==-1) {
        if (document.referrer) {
           alert("무단링크 하셨습니다.!");  // 무단링크시 에러 메세지
                window.location=home_url;  // 기본 홈으로 이동
        } else {
           alert("무단링크 하셨습니다. ");  // 무단링크시 에러 메세지
        window.location=home_url;  // 기본 홈으로 이동
        }
}
</script>

 출처 : 태그인넷










이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

'Publisher > XHTML' 카테고리의 다른 글

웹페이지 소스보기 금지  (0) 2008/08/19
Trackback :: http://techbug.tistory.com/trackback/121
올바른 성장과 따뜻한 나눔이 있는 넥스트리
가끔씩 Ajax 웹어플리케이션을 만들다 보면 단축키를 요구하는 고객들이 많다.
그러한 이유로 단축키 관련 스크립트를 찾아보던중에 prototype el.observe() (extjs에서는 el.on())를 이용한 keycode를 바인딩해주는
스크립트를 찾았다.

얼마전에 ajaxian post에 올라왔던 글이였는데 잊고 있었던거.. ㅡ.,ㅡ;
잠시 꼬불쳐 두다... 키값 참조할때도 좋겠다.

참조URL , 샘플URL

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.1/scriptaculous.js"></script>
<script type="text/javascript" >
var Key = {

// -- Alphabet
  A: 65,
  B: 66,
  C: 67,
  D: 68,
  E: 69,
  F: 70,
  G: 71,
  H: 72,
  I: 73,
  J: 74,
  K: 75,
  L: 76,
  M: 77,
  N: 78,
  O: 79,
  P: 80,
  Q: 81,
  R: 82,
  S: 83,
  T: 84,
  U: 85,
  V: 86,
  W: 87,
  X: 88,
  Y: 89,
  Z: 90,

  a: 97,
  b: 98,
  c: 99,
  d: 100,
  e: 101,
  f: 102,
  g: 103,
  h: 104,
  i: 105,
  j: 106,
  k: 107,
  l: 108,
  m: 109,
  n: 110,
  o: 111,
  p: 112,
  q: 113,
  r: 114,
  s: 115,
  t: 116,
  u: 117,
  v: 118,
  w: 119,
  x: 120,
  y: 121,
  z: 122,

// -- Special Keys
  BACKSPACE: 8,
  TAB: 9,
  ENTER: 13,
  ESCAPE: 27,
  END: 35,
  HOME: 36,
  ARROW_LEFT: 37,
  ARROW_UP: 38,
  ARROW_RIGHT: 39,
  ARROW_DOWN: 40,
  DELETE: 46,
  QUESTION_MARK: 63

};

/*
 * Tie into ? and ESCAPE
 */
document.onkeypress = function(e) {
    if (e.charCode == Key.QUESTION_MARK) {
        KeyBindingsHUD.toggle();
    } else if (e.keyCode == Key.ESCAPE) {
        KeyBindingsHUD.hide();
    } else {
        KeyBindings.actionForKey(e);
    }
}

var KeyBindings = (function() {
    var bindings = {};

    var findNumber = function(key) { // get the name of the key from the charCode
        for (var name in Key) {
            if (Key[name] == key) {
                return name;
            }
        }
    }

    return {
        add: function(binding) {
            if (typeof binding.keys == "string") { // short circuit for non-arrays
                binding.keys = [ binding.keys ];
            }
            bindings[binding.eventname] = binding;
        },

        remove: function(eventname) {
            bindings[eventname] = undefined;
        },

        html: function() {
            var html = [];

            for (var key in bindings) {
                if (bindings.hasOwnProperty(key)) {
                    var binding = bindings[key];
                    var keys = binding.keys.collect(function(key) {
                        return Object.isNumber(key) ? findNumber(key) : key;
                    });
                    html.push(keys.join(', ') + ': ' + binding.description);
                }
            }

            return html.join('<br/>');
        },

        actionForKey: function(e) {
            for (var action in bindings) {
                if (bindings.hasOwnProperty(action)) {
                    var keys = bindings[action].keys;
                    keys.each(function(key) {
                        if (e.charCode == 0) {
                            if (e.keyCode == key) {
                                document.fire(action, e);
                                throw $break;
                            }
                        }
                        if (String.fromCharCode(e.charCode) == key) {
                            document.fire(action, e);
                            throw $break;
                        }
                    });
                }
            }
        },

        caseInsensitive: function(keys) {
            if (typeof keys == "string") keys = [ keys ]; // array wrap
            var newArray = [];
            keys.each(function(c) {
               newArray.push(c, c.toUpperCase());
            });
            return newArray;
        }
    }
})();

/*
 *
 */
var KeyBindingsHUD = (function() {
    var isShown = false;
    var headerId = '_keybindings_header';

    return {
        toggle: function() {
          (isShown) ? this.hide() : this.show();
        },
        show: function() {
            if (!isShown) {
                var header = $(headerId);
                if (!header) {
                    header = this.createElement();
                }
                header.innerHTML = KeyBindings.html();
                header.blindDown({duration: 0.2});
                isShown = true;
            }
        },
        hide: function() {
            if (isShown) {
                $(headerId).blindUp({duration: 0.2});
                isShown = false;
            }
        },
        createElement: function() {
            var header = document.createElement('div');
            header.id = headerId;
            header.align = 'center';
            header.style.display = 'none';
            header.style.width = '100%';
            header.style.backgroundColor = '#111111';
            header.style.color = '#eeeeee';
            header.style.fontSize = '10pt';
            header.style.paddingTop = '4px';
            header.style.paddingBottom = '4px';
            header.style.borderBottom = '1px solid #333';

            var body = document.body;
            body.insertBefore(header, body.firstChild);

            return $(headerId);
        }
    }
})();




KeyBindings.add({
   eventname: 'action:move-up',
   keys: ['p', Key.ARROW_UP ],
   description: "Move up the stack"
});

KeyBindings.add({
   eventname: 'action:move-down',
   keys: ['n', Key.ARROW_DOWN ],
   description: "Move down the stack"
});

document.observe('action:move-up', function(e) {
    alert(1)
});

document.observe('action:move-down', function(e) {
    alert(2);
});

</script>


소스다운로드 :




이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback :: http://techbug.tistory.com/trackback/120
올바른 성장과 따뜻한 나눔이 있는 넥스트리

보통 IE5,5와 IE6에서의 투명 PNG이미지 처리시 CSS와 스크립트로 다음과 같이 처리하는데
.png24 {
    tmp:expression(setPNG24(this));
}


/* png24 이미지 파일을 웹에서 투명하게 변경하는 스크립트 */
function setPNG24(obj) {
    obj.width=obj.height=1;
    obj.className=obj.className.replace(/\bPNG24\b/i,'');
    obj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+ obj.src +"',sizingMethod='image');"
    obj.src='';
    return '';
}

보통 위와 같이 처리하면 onmouseover='this.src=this.src.replace(".gif","_over.gif")'와 같이 처리하는데..

이미지 토글처리를 하다가 setPNG로 filter:progid:DXImageTransform 필터가 적용되면 mouseover 이벤트로 이미지 변경이 되지 않았다.
IE7, IE6에서 필터가 적용되면  onclick, onmouseover이던지 이벤트는 모두 먹어버리고 심지어 <a>태그도 먹질 않는다. 다른 브라우저에서는 아예 filter 속성이 먹질 않아서 정상적으로 작동한다.

실제 이미지의 소스를 filter속에서 정의하기 때문에 그렇다.

이럴경우 다음과 같이 처리한다. [레퍼런스 : http://homepage.ntlworld.com/bobosola/png_mouseover.htm]
<!--[if lt IE 7]>
<script type="text/javascript">
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 and 6.
{
   if ((version >= 5.5) && (document.body.filters))
   {
       for(var i=0; i<document.images.length; i++)
       {
          var img = document.images[i]
          var imgName = img.src.toUpperCase()
          if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
          {
             var imgID = (img.id) ? "id='" + img.id + "' " : ""
             var imgClass = (img.className) ? "class='" + img.className + "' " : ""
             var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
             var imgStyle = "display:inline-block;" + img.style.cssText
             var imgAttribs = img.attributes;
             for (var j=0; j<imgAttribs.length; j++)
             {
                var imgAttrib = imgAttribs[j];
                if (imgAttrib.nodeName == "align")
                {
                   if (imgAttrib.nodeValue == "left") imgStyle = "float:left;" + imgStyle
                   if (imgAttrib.nodeValue == "right") imgStyle = "float:right;" + imgStyle
                   break
                }
             }
             var strNewHTML = "<span " + imgID + imgClass + imgTitle
             strNewHTML += " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
             strNewHTML += "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
             strNewHTML += "(src='" + img.src + "', sizingMethod='scale');\""
             strNewHTML += " onmouseover=\"PNGswap('" + img.id + "');\" onmouseout=\"PNGswap('" + img.id +"');\""
             strNewHTML += "></span>"
             img.outerHTML = strNewHTML
             i = i-1
          }
       }
   }
}
window.attachEvent("onload", correctPNG);
function PNGswap(myID)
{
   var strOver  = "_on"
   var strOff = "_off"
   var oSpan = document.getElementById(myID)
   var currentAlphaImg = oSpan.filters(0).src
   if (currentAlphaImg.indexOf(strOver) != -1)
      oSpan.filters(0).src = currentAlphaImg.replace(strOver,strOff)
   else
      oSpan.filters(0).src = currentAlphaImg.replace(strOff,strOver)
}

</script>
<![endif]-->

<script language="JavaScript" type="text/javascript">
<!--
function imgSwap(oImg)
{
   var strOver  = "_on"    // image to be used with mouse over
   var strOff = "_off"     // normal image
   var strImg = oImg.src
   if (strImg.indexOf(strOver) != -1)
      oImg.src = strImg.replace(strOver,strOff)
   else
      oImg.src = strImg.replace(strOff,strOver)
}
//-->
</script>

</head>
<body>

<div class="plainbackground">
<img id="img100" src="logo_off.png" width="100" height="100" alt="a PNG logo"
onmouseover="imgSwap(this)" onmouseout="imgSwap(this)"/>
</div>

<div class="plainbackground">
<img id="img200" src="logo2_off.png" width="100" height="100" alt="another PNG logo"
onmouseover="imgSwap(this)" onmouseout="imgSwap(this)"/>

</div>


결국 필터의 src 소스를 변경시켜야 하다는 얘기닷.. ㅡ.,ㅡ;
다들 건승하길... 저 같으면 그냥 gif 깨끗하게 쓰겠어요.. ㅠ.,ㅠ;



이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback :: http://techbug.tistory.com/trackback/119
ginnee
안녕하세요 데꾸벅님 ^^ 님의 사이트에서 정말 많은 도움을 얻고 있는 1人 입니다 ^^
다름이 아니라, ExtJs를 사용하다가 제 수준으로는 도저히 해결 불가능한 부분이 있어서, 염치 불구하고, 방명록에 질문글을 올렸습니다.
혹시 여유가 되신다면, 한번정도 읽어주시고, 가능하시다면 답변을 부탁드려도 될련지요..
좋은 하루 되시고, 나날이 행복하세요 ^^ 감사합니다.
2008/08/27 16:05

올바른 성장과 따뜻한 나눔이 있는 넥스트리

일전에 포스팅한 extjs 로드맵에서 언급했듯이 extjs 2.2 가 릴리즈 됐다.

그리고 데꾸벅의 한글화 부분(ext-2.2/build/locale/ext-lang-ko.js)도 추가적으로 패키징되어 들어가 있다. 캬햐햐
/**
 * Korean Translations By nicetip
 * 05 September 2007
 * Modify by techbug / 25 February 2008
 */
트리로더 확장과 불여우2에서 스크롤문제(overflow)와 IE6 버그(relative)일때 스크롤문제부분(스쿨학우여러분 땡큐 많이 참조했어요.. ^^)도 부분적으로 채택이 됐네요.. 크크..
FF3 Beta1에서 에러나던 버튼위치부분은... 쿨럭.. ㅡ.,ㅡ;

2.2 (2008 여름) : 릴리즈노트

  • Ext.Ajax 기능향상
  • Ext컴포넌트만의 초점을 맞춘(scoped) REST style지원
  • XML을 포함한 추가적인 TreeLoader 데이타로딩
  • 슬라이더 컴포넌트
  • 파일업로드 필드

릴리즈노트에 나타난 새롭게 추가된 기능들은 다음과 같다.

[ CheckboxGroup / RadioGroup ]

... },{
    xtype: 'checkboxgroup',
    fieldLabel: 'Multi-Column (horizontal)',
    columns: 3,
    items: [
        {boxLabel: 'Item 1', name: 'cb-horiz-1'},
        {boxLabel: 'Item 2', name: 'cb-horiz-2', checked: true},
        {boxLabel: 'Item 3', name: 'cb-horiz-3'},
        {boxLabel: 'Item 4', name: 'cb-horiz-4'},
        {boxLabel: 'Item 5', name: 'cb-horiz-5'}
    ]
},{ ...

각 개별적인 item으로만 적용했던 라디어버튼과 체크박스를 그룹핑하여 만든 컴포넌트가 추가되었다. [샘플보기]
사용자 삽입 이미지



[히스토리컴포넌트 추가] [샘플보기]
listeners: {
    'tabchange': function(tabPanel, tab){
        // Ignore tab1 since it is a separate tab panel and we're managing history for it also.
        // We'll use its handler instead in that case so we don't get duplicate nav events for sub tabs.
        if(tab.id != 'tab1'){
            Ext.History.add(tabPanel.id + tokenDelimiter + tab.id);
        }
    }
}

사용자 삽입 이미지

위의 탭기능중 sub-tab3 를 선택한위 상단 탭을 클릭햇을 경우 다시 돌아왔을때 sub-tab3이 선택되어 있게 만들어준다. 이전 버전에서는 별도의 글로벌변수로 선언해준뒤 사용했었는데 이번 릴리즈에는 포함되어 나와서 상당히 편할듯하다..
히스토리 컴포넌트 사용시에는 URL 핸들링이 하는지 URL자체가 변하는 효과를 볼수 있다.
사용자 삽입 이미지


[MultiSelect / ItemSelector] [데모보기]
이 기능은 사용자 확장기능에 올라왔던 기능인데 이번 릴리즈에 포함되었있다.
전통적인 방식의 <select multiple> 기능을 extjs로 구현한 것이다.
사용자 삽입 이미지


[FileUploadField][데모보기]
사용자 확장기능에서 가장 많이 찾던 swfFileUpload에서 차용한듯한 소스가 이번 릴리즈에 포함되어 있다. ajax fileupload를 찾는 국내 사용자에게는 상당히 유용한 컴포넌트가 될듯하다. Form 컴포넌트에 포함되어 있다.
var fibasic = new Ext.form.FileUploadField({
    renderTo: 'fi-basic',
    width: 400
});


[XmlTreeLoader] [데모보기]
사용자 확장기능이다. 이전 treeLoader와 사용법은 비슷하다.


[GMapPanel][데모보기]
사용자 삽입 이미지
구글맵을 보여줄수 있는 panel이 추가되었다.
이것또한 사용자 확장기능이였으나 이번 릴리즈에 포함되었다.








사실 새롭게 추가된 기능들만 보자면 로드맵에 나왔던 내용들은 거의 없다.
향상된 기능들이라면 Firefox3 및 IE8 버전을 지원하다는 내용과 드래그앤드랍 기능(특정DnD영역그리드패널 Row의 드래그엔 드랍, 폼내널에서의 드래그엔드랍), 그리도 속도 향상, status기능등이 많이 향상되었다.

또한 축약어 들이 많이 등장했는데 Ext.MessageBox()를 msg()와 같이 표현한다던가, 브라우저 버전에 대한 글로벌 변수 Ext.isGecko2, Ext.isGecko3 등이 더 추가되었다.

그외 아래 링크로 확인하시기 바랍니다.














이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

'Scripter > EXTJS' 카테고리의 다른 글

Ext2.2 Release  (11) 2008/08/07
ExtJS 2.1 릴리즈  (0) 2008/04/22
RESTFul 한 ExtJS  (0) 2008/04/16
Extjs Qtips 사용하기  (2) 2008/04/16
Extjs 기본레이아웃에 각종 패널붙이기  (0) 2008/04/16
ExtJS를 이용한 EditorGrid 붙이기  (0) 2008/04/07
Trackback :: http://techbug.tistory.com/trackback/118
김자영
헤매다가 여기까지왓네요 ...
질문도 받아주시는지?
제가 라디오버튼을 만드는데요
types[config.xtype || defaultType] is not a constructor
[Break on this error] return new types[config.xtype || defaultType](config); 이런에러가 떨어집니다.
무슨 문제인지 못찾겟어요 .. 시작한지 2틀됏는데 너무 어렵네요 좀 가르챠주세요
2008/08/12 19:35
어쩌다가...이곳까지 오셨어요~ ^^

2008/08/13 17:58

김자영
아 소스는 xtype: 'radiogroup',
fieldLabel: 'Auto Layout',
columns: 1,
items: [
{boxLabel: 'Item 1', name: 'rb-auto', inputValue: 1},
{boxLabel: 'Item 2', name: 'rb-auto', inputValue: 2, checked: true},
{boxLabel: 'Item 3', name: 'rb-auto', inputValue: 3},
{boxLabel: 'Item 4', name: 'rb-auto', inputValue: 4},
{boxLabel: 'Item 5', name: 'rb-auto', inputValue: 5}
]
샘플가져다 하는데 이러네요.....
2008/08/12 19:36
소스를 부분적으로만 봐서는 어떻게 됐는지 확인하기 어렵겠는데요? 그 상위 컴포넌트의 xtype은 정의해 주셨는지요?

2008/08/13 17:58

extjs 를 처음 접하면서 데꾸벅님 블로그를 정말 많이 참고하고 있습니다. ㅠ
다름이 아니라 2.1에서 form 전송시, 폼위치가 변경되는 문제때문에, 2.2로 갈아타니, 폼 버그는 수정된듯 한데요.
2.1 에서 잘되던 iframe 안의 tabpanel이. 2.2에서 tab 이 사라지는 문제가 발생중입니다.
혹시 왜 그런지 알수있을까요? ㅠ_ㅠ
2008/08/14 02:59
2.2 release될때 tabpanel에서는 별로 변경된게 없는데요.. position:"bottom"일때 구분자(" ")부분과 브라우저에 대한 패치밖에 없었는데.. 실제 option상에 빠진것이 있지 않나 쉽네요... 각 tabpanel로 쓰이는 item panel에 id값만 제대로 넣어주시면 깨지는 일은 별로 없습니다. 2.1에서 폼전송시 깨지는 부분도 form panel과 field item들의 id 값이 제대로라면 깨지지 않습니다.

2008/08/14 09:16

tasiks
지금 개발중인데요
css폴더를 샘플에서 복사해서 다른곳에 위치하구요 그곳으로 링크를 잡아줫는데..
css가 적용이 안됩니다. 샘플위치로 바꾸엇더니 적용이 잘되는데요 다른곳으로 옮겻을떄 왜 안되는걸까요?
2008/08/20 15:55
스타일쉬트는 해당 css를 호출하는 페이지를 기준이 아니라 css 파일 기준으로 모든 파일을 처리하기때문에 이미지나 import된것의 path가 틀려져서 그런겁니다. css파일 옮길때 images파일을 같이 옮기거나 이미지 경로를 모두 바꿔줘야 합니다.

2008/08/21 00:23

tasiks
네 그렇군요 ... 경로들을 다 수정하던지 해야하는군요 .. 감사합니다.
2008/08/21 14:11

kidscool
안녕하세요.. 질문 올려도 되는지요...
현재 Ext.form.ComboBox 이용하는데요..콤보박스 밑에 activex 그리드가 있습니다.
그래서 콤보박스가 그리드에 가려지는데요... 어케 나오는 방법 없을까요...ㅜ.ㅜ
2008/08/25 17:55
어떤종류의 activeX인가요? 플래쉬라면 wmode="trasparent"와 같이 바꿀수 있을텐데.. 만약 div로 된 레이어가 activeX 그리드위에 올라가지 않는다면 ComboBox도 올라가지 않습니다. 꽁수를 쓰셔야 할듯~~

2008/08/25 22:49

올바른 성장과 따뜻한 나눔이 있는 넥스트리

IE7 의 렌더링 방식이 IE6과 다르다.
CSS testing