2016-11-09 11 views
-1

최신 Firefox 릴리스에서 XUL <textbox> 요소를 사용하는 경우 요소에 초점을 맞추고 내용을 쓸 수 없습니다. 33과 같은 이전 버전에서 작동했습니다. 대신 html:textarea을 사용하면 효과가있는 것 같습니다. 그러나, 내 애플 리케이션에 원래의 XUL 요소를 유지하게되어 기쁘게 생각하고 여기에 무슨 일이 일어나고 있는지 이해하고 싶습니다.XUL 텍스트 상자를 편집하거나 볼 수 없습니다.

<textbox> 요소에 multiline 속성을 사용하면 요소가 전혀 표시되지 않습니다.

힌트 나 설명이 도움이 될 것입니다.

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?> 

<window 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
    xmlns:html = "http://www.w3.org/1999/xhtml" 
    width="800" 
    height="800"> 

<textbox flex="1" /> 
<html:textarea flex="1" /> 

</window> 
+1

버전은 무엇? 테스트가 끝나면 FF49.0.2와 Developer Edition (51.0a2)에서 제대로 작동합니다 (multiline = "true"를 추가하거나 추가하지 않고). 요소 내에서 클릭 (또는 Tab을 사용하여 집중)하고 필드에 무엇인가를 입력하는 것 이외의 다른 것을하는 것입니까? – Makyen

+0

@Makyen 테스트 해 주셔서 감사합니다. FF 49.0.2 및 Windows 10을 사용하여 테스트했습니다. 회귀 범위는 37 (작동 중)와 38 (고장) 사이 인 것으로 보입니다. 이상하게도 효과가 있습니다. 그러나 내가 여기에서 무엇인가를 바꿨다고 믿지 않아서 그것이 나를 위해 일하지 않는다는 것이 훨씬 더 이상하다. – kirschkern

+1

Windows 10에서도 테스트를 진행했습니다. 다른 작업이있는 것처럼 보입니다. 나는'chrome : // 'URL에서 접근 할 수있는 디렉토리에 파일을 넣었고 ('multiline = "true"로 섞어서 각 유형의 다중 필드를 추가했다.) URL을로드했다. 브라우저의 한 페이지 그것이 당신이하고있는 일이라면 나는 독립적 인 창 (예 : 대화 상자)으로 그것을 테스트 할 수 있습니다. – Makyen

답변

0

문제를 찾았습니다

여기에 내 작은 test.xul 파일 내용입니다.

override chrome://global/locale/textcontext.dtd 
     chrome://myapp/locale/xulrunner_global_textcontext.dtd 

파일은 파이어 폭스 (38)이 변경되고 추가 엔티티가 추가되었습니다 내 파일에 정의되지 않은 : 나는이처럼 보였다 내의 chrome.manifest 파일에 재정의 규칙을했다. 누락 된 ENTITY를 추가하면 모든 문제가 해결됩니다.

테스트 및 영감을 주신 Makyen에게 감사드립니다. 관심이있는 사람들을위한

변경 : 파이어 폭스의 https://hg.mozilla.org/releases/l10n/mozilla-beta/de/diff/6f25b6d2dcf5/toolkit/chrome/global/textcontext.dtd

+0

원본 * chrome.manifest *의 내용을 질문에 추가하십시오. 그 정보가 없다면이 대답은 말이되지 않습니다.다른 말로하면, 질문에 그 정보가 없다면 누군가가 이것이 질문에 대한 답이라고 말할 수 있어야합니다. 질문에는 대답을 결정할 수있는 충분한 정보가 있어야합니다. 나에게/@ 당신이 질문을 업데이트 할 때'@ Makyen'을 포함하여 나를 위해 의견을 남겨주세요. – Makyen

+0

참고 : 재정의를 변경해야하는 여러 Firefox 버전과 호환되도록하려면 행에서 'appversion' 선언문을 사용하고 다른 파일로 여러 재정의를 선언해야합니다. 그렇게하면 좌절하게됩니다. 각 행에 여러 개의 'appversion'플래그를 가질 수 있지만 함께 OR *됩니다. 다시 말하면'Appversion <= 41. * Appversion> = 40.0'이라고 말하면 40.0-41. * 범위 밖에 들지 않습니다 (참고 :'*'는 항상 * any *가 아닌 * largest *를 의미합니다). 이 2 개의 appversion 플래그를 함께 사용하면 모든 버전이 <=41.* OR > = 40.0이므로 * all * 버전을 실제로 지정합니다. – Makyen

+0

['appversion' 플래그] (https://developer.mozilla.org/en-US/docs/Chrome_Registration#appversion)도 꽤 특정 버전입니다. ESR이 명시 적으로 지정되어야 할 수도 있습니다. ESR이'appversion'이 검사되는 문자열의 일부이기 때문입니다. 범위 지정을 최적화하는 방법이 있는지 확인하려면 Firefox 소스 코드를 살펴 봐야합니다. 예를 들면 : * chrome.manifest *에서 나중에 같은 URL에 대한 두 번째 오버라이드가 'appversion'과 일치하는 이전 스펙을 대체하는지 확인하십시오. – Makyen