[JQUERY] "가져가"어떻게 CSS를 활성화 순수 자바 스크립트에 마우스 오버를 시뮬레이션 할 수 있습니까?
JQUERY"가져가"어떻게 CSS를 활성화 순수 자바 스크립트에 마우스 오버를 시뮬레이션 할 수 있습니까?
해결법
-
1.당신은 할 수 없습니다. 그것은 신뢰할 수있는 이벤트가 아니다.
당신은 할 수 없습니다. 그것은 신뢰할 수있는 이벤트가 아니다.
당신은 클래스를 추가하고 그 마우스 오버 /로 마우스 이벤트에 수동 / 제거를 추가해야합니다.
-
2.이 같은 마우스 오버 이벤트를 시뮬레이션 할 수 있습니다 :
이 같은 마우스 오버 이벤트를 시뮬레이션 할 수 있습니다 :
HTML
<div id="name">My Name</div>
자바 스크립트
var element = document.getElementById('name'); element.addEventListener('mouseover', function() { console.log('Event triggered'); }); var event = new MouseEvent('mouseover', { 'view': window, 'bubbles': true, 'cancelable': true }); element.dispatchEvent(event);
-
3.특정 페이지 요소의 특정 세트를 모두 가져가 이벤트에 대한 CSS를 설정 CSS 속성의 일부 세트가받을 수, 확인, 자동화 된 테스트를 작성하는 동안 나는이 질문에 비틀 거렸다.
특정 페이지 요소의 특정 세트를 모두 가져가 이벤트에 대한 CSS를 설정 CSS 속성의 일부 세트가받을 수, 확인, 자동화 된 테스트를 작성하는 동안 나는이 질문에 비틀 거렸다.
위의 대답은 완벽하게 설명하고 있지만 단순히 JS으로 가져가 이벤트를 트리거 한 후 관심의 일부 CSS 값을 조사 할 수없는 이유, 그것은 "나는 CSS를 활성화 순수 자바 스크립트에 마우스 오버를 시뮬레이션 어떻게"최초의 질문에 대답 않습니다 : 호버 "?" 부분적으로 만.
이것은 성능이 좋은 해결책이 아니다. 우리는 성능이 중요하지 않은 자동화 된 테스트를 위해 그것을 사용할 수 있습니다.
simulateCssEvent = function(type){ var id = 'simulatedStyle'; var generateEvent = function(selector){ var style = ""; for (var i in document.styleSheets) { var rules = document.styleSheets[i].cssRules; for (var r in rules) { if(rules[r].cssText && rules[r].selectorText){ if(rules[r].selectorText.indexOf(selector) > -1){ var regex = new RegExp(selector,"g") var text = rules[r].cssText.replace(regex,""); style += text+"\n"; } } } } $("head").append("<style id="+id+">"+style+"</style>"); }; var stopEvent = function(){ $("#"+id).remove(); }; switch(type) { case "hover": return generateEvent(":hover"); case "stop": return stopEvent(); } }
generateEvent 모든 CSS 파일, 대체 읽 빈 문자열로 가져가하고 적용합니다. 호버 스타일이 적용됩니다 :이 모든 것이 효과가 있습니다. 이제 하나는 howered 스타일과 시뮬레이션을 중지하여 초기 상태로 설정 다시 목록을 조사 할 수 있습니다.
왜 우리는 전체 문서에 대한 호버 효과를 적용 할뿐 아니라 시트에서하는 방법을 사용합니다 관심있는 요소에 대한 다음 element.css을 수행 (...)?
그 같은 완료, 스타일이 적용 인라인 것, 이것은 원래의 CSS 호버 스타일에 의해 오버라이드 (override)하지 않을 수 있습니다 다른 스타일을 재정의 할 것입니다.
어떻게 이제 단일 요소에 대한 호버을 시뮬레이션 할 것인가?
이 때문에 더하지, 성능이 좋은하지 않습니다. 당신이해야하는 경우에는 스타일이 요소에 대해 적용하는 경우 element.is (selectorOfInterest)로 확인 만의 스타일을 사용할 수 있습니다.
재스민에서 할 수 있습니다 예를 들어, 지금 수행 :
describe("Simulate CSS Event", function() { it("Simulate Link Hover", function () { expect($("a").css("text-decoration")).toBe("none"); simulateCssEvent('hover'); expect($("a").css("text-decoration")).toBe("underline"); simulateCssEvent('stop'); expect($("a").css("text-decoration")).toBe("none"); }); });
-
4.호버를이 클래스에 : 내가 보통이 경우에 할 것은 자바 스크립트를 사용하여 클래스를 추가 ...와 같은 CSS를 부착입니다
호버를이 클래스에 : 내가 보통이 경우에 할 것은 자바 스크립트를 사용하여 클래스를 추가 ...와 같은 CSS를 부착입니다
사용해보십시오
theElement.addEventListener('onmouseover', function(){ theElement.className += ' hovered' });
또는 이전 버전의 브라우저를위한 :
theElement.onmouseover = function(){theElement.className += ' hovered'};
당신은 당연히 당신이 요소를 떠날 때 "떴다"클래스를 제거하는 onmouseout 사용해야합니다 ...
-
5.스타일러 요소에 CSS 의사 클래스를 적용 할 수있는 라이브러리 : 당신은 의사를 사용할 수 있습니다.
스타일러 요소에 CSS 의사 클래스를 적용 할 수있는 라이브러리 : 당신은 의사를 사용할 수 있습니다.
(async () => { let styler = new PseudoStyler(); await styler.loadDocumentStyles(); document.getElementById('button').addEventListener('click', () => { const element = document.getElementById('test') styler.toggleStyle(element, ':hover'); }) })();
면책 조항 :이 라이브러리의 공동 저자입니다. 우리는 특별히 가능성이 페이지의 CSS 규칙을 제어 할 수 부족 크롬 확장에 사용하기 위해, 그것은 또한 출처 간 스타일 시트를 지원하도록 설계되었습니다.
-
6.난 당신이 DOM 조작 후 CSS를 검사 할 있으리라 믿고있어,하지만 곧 당신이 DevTools로에 마우스 다시 이동, 이벤트는 더 이상 그 html 요소에 활성화되어 있지 않습니다. 자바 스크립트 이벤트에 대한 DevTools로의 호버 옵션 : 당신은 아마 뭔가를하고 싶습니다. 즉 존재하지 않는,하지만 당신은 그것을 시뮬레이션 할 수 있습니다.
난 당신이 DOM 조작 후 CSS를 검사 할 있으리라 믿고있어,하지만 곧 당신이 DevTools로에 마우스 다시 이동, 이벤트는 더 이상 그 html 요소에 활성화되어 있지 않습니다. 자바 스크립트 이벤트에 대한 DevTools로의 호버 옵션 : 당신은 아마 뭔가를하고 싶습니다. 즉 존재하지 않는,하지만 당신은 그것을 시뮬레이션 할 수 있습니다.
자바 스크립트가 비활성화되어 있기 때문에, 다시 요소 (들)을 수정할 수있는 기회를 얻을하지 않습니다. 당신은 DevTools로 이동하고, 마우스를 클릭하거나 그것으로 뭔가 다른 일을하는 것처럼 CSS와 HTML을 검사 할 수 있습니다. 작업을 완료 한 후, 다시 명령 패널로 이동하여 '자바 스크립트 사용'을 선택합니다.
from https://stackoverflow.com/questions/17226676/how-do-i-simulate-a-mouseover-in-pure-javascript-that-activates-the-css-hover by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 JQuery와 작업 체인입니까? (0) | 2020.10.07 |
---|---|
[JQUERY] JQuery와 $ 실제로 무엇을 반환합니까? (0) | 2020.10.07 |
[JQUERY] 애니메이션 scrollTop 파이어 폭스에서 작동하지 (0) | 2020.10.07 |
[JQUERY] jQuery를 DatePicker에서 onchange를 이벤트 문제 (0) | 2020.10.07 |
[JQUERY] jQuery를 객체와 DOM 소자 (0) | 2020.10.07 |