相关疑难解决方法(0)

强制javascript EventListener执行一次?

我想知道是否有可能强制一个javascript事件监听器,没有条件是真的强制它执行一次然后继续监听它的条件要满足进一步执行?

javascript listener addeventlistener

18
推荐指数
2
解决办法
3万
查看次数

触发"onchange"事件

仅当USER输入某个值时才会触发"onchange"事件.当我通过Javascript自动更改值时,为什么无法触发事件?还有其他选择吗?

动画:

在此输入图像描述

码:

<!DOCTYPE html>

<html>
    <head>
        <script>
            document.addEventListener ("DOMContentLoaded", function () {
                var input = this.getElementsByTagName ("input")[0];
                var div = this.getElementsByTagName ("div")[0];
                var i = 0;
                var seconds = 5;

                div.innerHTML = "The following input should fire the event in " + seconds + " seconds";

                var interval = window.setInterval (function () {
                    i ++;

                    if (i === seconds) {
                        window.clearInterval (interval);

                        input.value = "Another example";

                        div.innerHTML = "Nothing ! Now try change the value manually";
                    }
                    else { …
Run Code Online (Sandbox Code Playgroud)

javascript triggers onchange

16
推荐指数
2
解决办法
2万
查看次数

网站无法识别我的输入[如何从VBA手动触发IE dom事件]

我想自动购买gdax.但我在Amount窗口中的输入无法识别.我可以在小字段上看到,它说:Total (LTC) ? 0.00000000

我的代码:

Sub test()

    Dim ObjIE As New InternetExplorer
    Dim Ohtml As HTMLDocument
    Dim HTMLtags As IHTMLElementCollection
    Dim HTMLtag As IHTMLElement
    Dim HTMLobjekt As IHTMLElement
    Dim item_limit As Object
    Dim y As Integer

    With ObjIE
        .Visible = True
        .navigate "https://www.gdax.com/trade/LTC-EUR"
        Do Until .readyState = READYSTATE_COMPLETE: Loop
        Set Ohtml = .document
    End With

    'Amount
    Do
        Set HTMLtags = Ohtml.getElementsByClassName("OrderForm_input-box_XkGmi")
        DoEvents
    Loop While HTMLtags.Length = 0
    For Each HTMLtag In HTMLtags
        If HTMLtag.Children(1).innerText = "EUR" Then
            Set HTMLobjekt …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer vba web-scraping dom-events

15
推荐指数
2
解决办法
1555
查看次数

通过Javascript控制台单击元素

想象一下#button1,网站上有一个由jQuery监视的元素:

$('#button1').click(function(){
   console.log("you clicked");
};
Run Code Online (Sandbox Code Playgroud)

那么如何#button1通过JavaScript控制台单击此元素?有这样的命令click("#button1")吗?谢谢.

javascript console jquery

14
推荐指数
4
解决办法
4万
查看次数

Rails 7 (7.0.2.3) Importmap jQuery 未在视图中定义

我已经尽可能多地寻找有关在 Rails 7 (7.0.2.3) 中安装 jQuery 的帮助。我想在我的视图中的脚本标签中使用它,但我似乎无法将其导出到全局可用的位置,呃...任何地方。

当然 importmaps 就安装和映射包而言很容易操作。太棒了。之后,整个文档分崩离析,笼罩在这种使用 js 包的新方式上。环顾四周,有很多混乱。

也就是说,我如何添加这个或类似的东西:

import jquery from "jquery"
window.jQuery = jquery;
window.$ = jquery;
Run Code Online (Sandbox Code Playgroud)

到 application.js 或任何让这些全局函数工作的地方,比如 $. 我希望 $ 在我的所有视图中可用。

至于我所做的:

./bin/importmap pin jquery --download
Run Code Online (Sandbox Code Playgroud)

给我 importmap 行:

pin "jquery" # @3.6.0
Run Code Online (Sandbox Code Playgroud)

好的。然后查看 importmap JSON:

{
  "imports": {
    "application": "/assets/application-37a24e4747cc3cde854cbbd628efbdf8f909f7b031a9ec5d22c5052b06207eb8.js",
    "@hotwired/turbo-rails": "/assets/turbo.min-96cbf52c71021ba210235aaeec4720012d2c1df7d2dab3770cfa49eea3bb09da.js",
    "@hotwired/stimulus": "/assets/stimulus.min-900648768bd96f3faeba359cf33c1bd01ca424ca4d2d05f36a5d8345112ae93c.js",
    "@hotwired/stimulus-loading": "/assets/stimulus-loading-1fc59770fb1654500044afd3f5f6d7d00800e5be36746d55b94a2963a7a228aa.js",
    "jquery": "/assets/jquery-498b35766beec7b412bab57a5acbe41761daa65aa7090857db4e973fa88a5623.js",
    "controllers/application": "/assets/controllers/application-368d98631bccbf2349e0d4f8269afb3fe9625118341966de054759d96ea86c7e.js",
    "controllers/hello_controller": "/assets/controllers/hello_controller-549135e8e7c683a538c3d6d517339ba470fcfb79d62f738a0a089ba41851a554.js",
    "controllers": "/assets/controllers/index-7a8fc081f7e391bd7b6fba95a75e36f88ba813da2c4c8787adad248afb9a0a06.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

丁。看来它就在那里。然后在 application.html.erb 中添加一个简单的脚本标签:

<script type="text/javascript" charset="utf-8">
        $(document).ready(function (){
            console.log('jQuery working.');
        })
</script>
Run Code Online (Sandbox Code Playgroud)

失败。检查员说:

(index):41 …
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails import-maps ruby-on-rails-7

13
推荐指数
1
解决办法
5408
查看次数

如何在硒中解雇JS事件?

我正在使用selenium WebDriver语法.我知道,在基于selenium server的语法中,您可以通过执行以下操作来触发javascript事件:

Selenium selenium = new DefaultSelenium("localhost", server.getPort(),
            "*iexplore", "http://www.eviltester.com");
selenium.fireEvent("lteq30", "blur");
Run Code Online (Sandbox Code Playgroud)

如何在使用WebDriver创建的应用程序中执行相同操作(例如,FirefoxDriver)?

java selenium

12
推荐指数
2
解决办法
3万
查看次数

JavaScript改变输入值时的事件?

<input>通过JavaScript代码更改元素值时的事件是什么?例如:

$input.value = 12;
Run Code Online (Sandbox Code Playgroud)

input事件在此不帮助,因为它不是谁在改变值的用户.

在Chrome上进行测试时,change不会触发该事件.也许是因为元素没有失去焦点(它没有获得焦点,所以它不能失去它)?

javascript events

10
推荐指数
5
解决办法
2万
查看次数

如何使用纯JavaScript模拟Chrome 56中输入网页元素中输入的密钥?

我正在网页中开发一些程序化自动化,并试图在Chrome 56(特别是56.0.2924.87)的输入网页元素中输入击键,似乎无法使其正常工作.

我已经完成了我的家庭作业并尝试了许多在线示例,包括在此处找到的示例:Javascript - 模拟Chrome 53上的关键事件,但没有运气.

这是我最近(目前不工作)的尝试,基于上述问题中提供的解决方案:

<!DOCTYPE html>

<head>
  <meta charset="utf-8" />
  <title>Keyboard Events</title>
</head>

<body>
  <input id="id_input" onkeydown="console.log(event);">
  <button onclick="
    var e = new Event('keydown');
    e.keyCode = 65;
    document.getElementById('id_input').dispatchEvent(e);
    ">click me</button>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

您可以观察正在生成的事件,但输入Web元素中不会出现任何字符.

非常感谢一个有效的JavaScript示例,在Chrome 56中工作,按下页面上的按钮和出现在输入web元素中的字符,不设置输入web元素的"value"属性.工作解决方案必须导致字符仅通过使用事件(可能是keypress/keydown等)出现

更新:我的问题与此问题不同:如何在JavaScript中触发事件?因为我已经在使用解决方案中列出的dispatchEvent方法了.我的问题的答案可能包括我所包含的第一个链接的多次尝试中尚未概述的额外步骤.

javascript google-chrome

10
推荐指数
1
解决办法
1785
查看次数

在我自己的对象中实现事件

我想要的是一个提供一些事件的自定义对象.例如:

var CustomObjectTextChangedEventName = 'textChanged';
var CustomObject = function () {
    var _this = this;
    var _text = "";

    _this.OnTextChanged = document.createEvent("Event");
    _this.OnTextChanged.initEvent(CustomObjectTextChangedEventName, true, false);

    _this.ChangeText = function (newText) {
        _text = newText;
        fireTextChanged();
    };

    function fireTextChanged() {
        _this.dispatchEvent(_this.OnTextChanged);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用该事件的代码如下所示:

myCustomObject = new CustomObject();
myCustomObject.addEventListener(CustomObjectTextChangedEventName, handleTextChanged, false);
Run Code Online (Sandbox Code Playgroud)

正如您所看到的......在JS中使用事件的默认方式.但我不能让它变得烦人......

目前我的问题是我的对象没有实现"addEventListener"和"dispatchEvent".但是这个功能是从"元素"正常实现的......

我可以以某种方式提供它们,还是我必须为自己实现它们?我该如何实施它们?我是否必须实施自己的事件处理?(具有处理程序的内部列表,"添加" - 和"删除" - 处理程序功能,并在我要触发事件时触发每个处理程序)

问候!

javascript javascript-events

9
推荐指数
1
解决办法
5810
查看次数

如何使用vanilla javascript触发窗口调整大小事件?

我试图触发调整使用普通的JS测试用的事件,但window.resizeTo()window.resizeBy()按照现代浏览器会阻止这些行为不触发事件.我试过jquery $(window).trigger('resize');但它只适用于通过jquery附加的事件$(window).on('resize', handler);.但在我的情况下,我正在处理的项目使用普通的javascript.

window.addEventListener('resize', function(){
    console.log('window has been resized !');
});

// or even using global onresize
window.onresize = function() {
    console.log('window has been resized!');
};
Run Code Online (Sandbox Code Playgroud)

javascript testing

9
推荐指数
1
解决办法
2万
查看次数