相关疑难解决方法(0)

有没有办法在Selenium WebDriver中使用JavaScript通过XPath获取元素?

我正在寻找类似的东西:

getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
Run Code Online (Sandbox Code Playgroud)

我需要使用JS获取元素的innerHTML(在Selenium WebDriver/Java中使用它,因为WebDriver本身无法找到它),但是如何?

我可以使用ID属性,但并非所有元素都具有ID属性.

[固定]

我正在使用jsoup在Java中完成它.这符合我的需要.

javascript xpath selenium-webdriver document.evaluate

218
推荐指数
7
解决办法
27万
查看次数

JavaScript库中的前导分号有什么作用?

在几个JavaScript库中,我在一开始就看到了这种符号:

/**
 * Library XYZ
 */
;(function () {
  // ... and so on
Run Code Online (Sandbox Code Playgroud)

虽然我对"立即执行的函数"语法非常满意

(function(){...})()
Run Code Online (Sandbox Code Playgroud)

我想知道领先的分号是什么.我能想到的是,它是一种保险.也就是说,如果库嵌入在其他有缺陷的代码中,那么它就是"最后一个语句在最后结束"的速度缓冲.

它有任何其他功能吗?

javascript syntax

151
推荐指数
5
解决办法
9261
查看次数

使函数等到元素存在

我正在尝试在另一个画布上添加画布 - 如何在创建第一个画布之前让这个函数等待启动?

function PaintObject(brush) {

    this.started = false;

    // get handle of the main canvas, as a DOM object, not as a jQuery Object. Context is unfortunately not yet
    // available in jquery canvas wrapper object.
    var mainCanvas = $("#" + brush).get(0);

    // Check if everything is ok
    if (!mainCanvas) {alert("canvas undefined, does not seem to be supported by your browser");}
    if (!mainCanvas.getContext) {alert('Error: canvas.getContext() undefined !');}

    // Get the context for drawing in the canvas
    var mainContext = …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 function

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

流星测试驱动开发

我不知道如何在流星中进行测试驱动开发.

我在文档或常见问题解答中没有提到它.我没有看到任何例子或类似的东西.

我看到有些软件包正在使用Tinytest.

我需要开发人员的回应,这是什么路线图.有点像:

  • 可能,没有文档,自己搞清楚
  • 流星不是以可以制作可测试应用程序的方式构建的
  • 这是计划中的功能
  • 等等

tdd meteor

120
推荐指数
7
解决办法
1万
查看次数

在新的Promise()构造函数中使用async/await是一种反模式吗?

我正在使用该async.eachLimit功能一次控制最大操作数.

const { eachLimit } = require("async");

function myFunction() {
 return new Promise(async (resolve, reject) => {
   eachLimit((await getAsyncArray), 500, (item, callback) => {
     // do other things that use native promises.
   }, (error) => {
     if (error) return reject(error);
     // resolve here passing the next value.
   });
 });
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我无法将该myFunction函数声明为异步,因为我无法访问eachLimit函数的第二个回调内的值.

javascript asynchronous node.js async-await

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

jQuery中的onHide()类型事件

有没有人知道一个onHide()事件或jQuery中类似的东西?

我试过了:

$(this).bind('hide', function(){
    console.log('asdasda')
})
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.

编辑: 只是为了澄清,它是使用CSS隐藏的display:none.
我知道回调函数,但因为我没有隐藏它(CSS是)我不能使用它.对于它的价值,我需要检查下拉列表何时可见.它由以下CSS显示:

ul li:hover ul {
    display: block;
} 
Run Code Online (Sandbox Code Playgroud)

jquery events javascript-events

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

在'MutationObserver'上'观察':参数1不是'Node'类型

我正在创建Chrome扩展程序,并尝试在gMail撰写框的SEND按钮旁边添加一个小文本.

我正在使用MutationObserver来了解撰写框窗口何时出现.我通过观察一个带有类的元素来做这个,no因为compose box元素被创建为这个元素(class no)的子元素.

当用户单击撰写按钮并出现撰写框窗口时,我会使用该.after()方法在SEND按钮旁边放置一个元素.发送按钮类名称是.gU.Up.

这些是gMail的真正类名,也很奇怪.

以下是我使用的代码:

var composeObserver = new MutationObserver(function(mutations){ 
    mutations.forEach(function(mutation){
        mutation.addedNodes.forEach(function(node){
            $(".gU.Up").after("<td> <div> Hi </div> </td>");
        });
    });
});

var composeBox = document.querySelectorAll(".no")[2];
var config = {childList: true};
composeObserver.observe(composeBox,config);
Run Code Online (Sandbox Code Playgroud)

问题是我经常遇到以下错误:

Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?我已经尝试了很多东西,并在这里查看了其他答案,但仍然无法摆脱这个错误.

这是我的manifest.json文件:

{
    "manifest_version": 2,
    "name": "Gmail Extension",
    "version": "1.0",

    "browser_action": {
        "default_icon": "icon19.png",   
        "default_title": "Sales Analytics Sellulose"    
    },

    "background": {
        "scripts": ["eventPage.js"], …
Run Code Online (Sandbox Code Playgroud)

javascript gmail google-chrome-extension mutation-observers gmail-api

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

如何在调用另一个函数之前等待div加载?

<script>
var href;

    $(function(){
        $("a.load").click(function (e) { 
            e.preventDefault();
            href = this;

            // cover all bookmarks
            $("."+($(this).attr("class"))).css('border-bottom', 'solid 1px black');
            $("."+($(this).attr("class"))).css('background-color', '#F5F5F5');

            // uncover chosen bookmark
            $("#"+($(this).attr("id"))).css('border-bottom', 'solid 2px white');
            $("#"+($(this).attr("id"))).css('background-color', 'white');

            $("#tempMain").load($(this).attr("href")); // load content to temp div

            setTimeout(function() {resizeDivs();}, 500); // synchronize size of #main and #rightColumn
        });

    });

    function resizeDivs() {
        var heightNew = $("#tempMain").css("height");
        $("#rightColumn").css('height',heightNew);
        $("#main").css('height',heightNew);
        // $('#main').load($(href).attr('href'));
        $("#main").html($("#tempMain").html()); // is faster than loading again
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我正在通过jQuery函数将子页面加载到我的主页面的选定div中.为了同步主div和右列的高度我正在使用jQuery的.css()方法.我希望调整大小看起来很顺利,所以我已经解决了以下步骤:
1.将子页面的内容加载到不可见的临时div.
2.计算临时div的高度.
3.将主div和右列的高度更改为该临时div的高度.
4.将子页面的内容加载到主div.

但是,我知道我目前这样做的方式非常蹩脚,因为使用setTimeout()等待加载内容的即兴创作 …

javascript jquery

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

使用jQuery动态创建和"单击"链接

我想动态创建一个<a href="mailto:...">元素,然后"点击"它.所有这些都没有修改页面.

我正在尝试这个:

$('<a href="mailto:test@test.com">&nbsp;</a>').click();
Run Code Online (Sandbox Code Playgroud)

......无济于事

javascript mailto jquery href

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

iframe CSS覆盖新的Twitter小部件

我正在尝试自定义新的Twitter小部件,但是在CSS上遇到了一些问题,似乎无法覆盖这个新的小部件.我试过寻找解决方案,但找不到任何匹配.

这是我的页面右侧导航中的小部件和.timeline类的调整后的CSS:

.timeline {
margin-bottom:0;
border:0 !important;
border-radius:0 !important;
-webkit-border-radius:0;
-moz-border-radius:0;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="bg">
<h3 class="twitter">Twitter News</h3>
<div id="twitter">
<a class="twitter-timeline" href="https://twitter.com/" data-widget-id="268336500536647680">Tweets by </a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</div></div>
Run Code Online (Sandbox Code Playgroud)

我已经开始使用!important声明并尝试使用主#twitter id来覆盖,但都不起作用.

任何想法都非常感激.

**我显然需要以某种方式编辑iframe,但不确定如何 - 如果有人更清楚地知道如何使用我的代码(而不是教程)来做到这一点会很棒.我还需要更改iframe宽度..

html javascript css iframe

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