React.js를 사용한 실험으로 콘텐츠 스크립트를 사용하여 특정 웹 사이트에 입력 필드 (그리고 지금은 버튼)를 삽입하는 크롬 확장을 구축하려고합니다. 이 경우 Twitter에 삽입하려고합니다. 그것은 다음과 같습니다 코드는 텍스트 아래의 버튼 입력을두고 있음을 유의하시기 바랍니다,하지만 동일한 결과를웹 사이트의 일반적인 행동을 유발하는 클릭이 중지 될 수 있습니까?
주입 작업을해야하지만 실제로 입력을 사용할 수 없습니다. 요소를 홈 페이지의 트윗에 삽입하고 입력을 클릭하여 입력하면 트윗이 표시되고 확장되거나 축소됩니다. 이렇게하면 입력에서 포커스를 제거하여 쓸모 없게 만듭니다. 초점 onBlur
과 stopPropagation()
onClick
을 다시 호출하려고 시도했지만 onClick
이 실행되지 않으며 초점을 다시 onBlur
으로 가져 오는 방법을 모르겠습니다. 초점을 잃는 것을 어떻게 멈출 수 있습니까? 당신은 스스로를 테스트하려면
, 반응 -와 - addons.js이 스타터 키트에서 온 here
편집 : 나는 그 클릭 수 있다면 코드에 버튼을 추가하는 시도가 참조하고 저 할 수 있어요. 나는 트윗 자체를 방아쇠를 당기지 않고 클릭 할 수있다. 즉, 입력 상자에 문제가있는 특정 항목이 있거나 버튼에 클릭이 전파되는 것을 차단하는 것이 있습니다. 트윗에 포함되지 않은 다른 요소가있는 입력 필드를 클릭 할 때 특별한 트리거가 있습니까?
EDIT 2 : 이제는 포함 된 div에 stopPropagation을 추가하고 Z- 색인을 늘리려고 시도했지만 둘 중 어느 것도 중지하지 않았습니다.
EDIT 3 : 나는 행운이없는 상태에서 onMouseDown (및 onMouseUp 및 onClick, 동시에)을 stopPropagation과 함께 사용해 보았습니다. 이상한 부분은 나중에 isPropagationStopped()를 시도한 후 true를 반환합니다. 이것이 그렇다면 트위터가 여전히 트리거되는 이유는 무엇입니까?
test_input.js
/**
* @jsx React.DOM
*/
var Test_Input = React.createClass({
maintain_focus: function(){
e.stopPropagation();
console.log("=====");
},
refocus: function(e){
e.stopPropagation();
},
handle_click: function{
console.log("clicked");
}
render: function(){
return (<div>
<button onclick={this.handle_click}>
<input className="new_note_input" placeholder="Note" onclick={this.maintain_focus} onBlur={this.refocus}></input>
</div>);
}
});
var elements_to_append_to = document.getElementsByClassName('content');
[].forEach.call(elements_to_append_to, function(element){
var container = $("<span />");
$(element).after(container);
React.renderComponent(<Test_Input />, container[0]);
});
manifest.json을
{
"name": "Test Input",
"version": "0.1",
"manifest_version": 2,
"permissions": ["tabs", "bookmarks", "declarativeWebRequest", "*://*/*"],
"content_scripts": [
{
"matches": [ "https://twitter.com/*"],
"css":["src/social_notes.css"],
"js":[ "build/jquery-2.1.0.min.js", "build/react-with-addons.js", "build/test_input.js"]
}
]
}
당신은 트위터 홈 페이지에 입력 필드를 삽입 않습니다. 우리를 보여줄 수 있습니까? (어쩌면 스냅 샷과 HTML) – Chickenrice
@Chickenrice는 스크린 샷을 추가했습니다.이 스크립트는 HTML이 없기 때문에 Chrome 확장 프로그램을 웹 사이트에 직접 삽입 할 수 있습니다. – EasilyBaffled
입력의'focus' 이벤트 전파를 중지 시키려고 했습니까? –