小编Sam*_*ley的帖子

Javascript:如何延迟返回img.complete的值

我编写了一个脚本来测试IMG标记中的SVG支持:

function SVGinIMG() {
  var SVGdata = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D'
  var i = document.createElement('img');
  i.setAttribute('src',SVGdata);
  return i.complete;
}
window.onload = function() {
  var hasSVG = SVGinIMG();
  alert(hasSVG);
}
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,除了当我在WebKit浏览器中运行脚本时,我第一次加载页面时不会触发complete属性; 当我刷新页面时,它可以正常工作.在返回的IMG已完成加载之前函数运行; 推迟这个的最好方法是什么?

javascript svg browser-feature-detection

4
推荐指数
1
解决办法
1546
查看次数

如何在 Mac 上查看我的 $PATH

很长一段时间以来,我在 Mac 上设置 Rails 和其他东西时一直在与“PATH”问题作斗争,而且我无法得到关于如何查看我的 $PATH 并更改它的直接答案。我现在只是运行终端,但如果我需要运行另一个程序来运行 Bash 命令或其他东西,我可能可以弄清楚如何做到这一点。

macos terminal

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

如何在消息控制器之类的对话框外访问Bot Framework ConversationData?

在机器人内部的对话框中,我将标志值存储在ConversationData中,如下所示:

context.ConversationData.SetValue("SomeFlag", true);
Run Code Online (Sandbox Code Playgroud)

稍后,将消息分派到对话框之前,我需要在MessagesController中检查该标志。根据上一个问题,我尝试通过StateClient检索ConversationData,如下所示:

public async Task<HttpResponseMessage> Post([FromBody] Activity incomingMessage)
{
    StateClient stateClient = incomingMessage.GetStateClient();
    BotData userData = await stateClient.BotState.GetConversationDataAsync(message.ChannelId, message.Conversation.Id);
    bool finishedQuote = userData.GetProperty<bool>("SomeFlag");
    //...
    // do conditional logic, then dispatch to a dialog as normal
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行时,该userData变量持有一个BotData对象,该对象userData.Data为null,并且我无法通过检索任何存储的标志GetProperty。我在相关文档中看不到任何有助于阐明此问题的信息-我在这里可能做错了什么?我有误会吗?

c# botframework

4
推荐指数
1
解决办法
1547
查看次数

是 Azure DevOps 构建管道,有没有办法从另一个作业中取消一个管道作业?

我有一个 Azure DevOps 构建管道,其中包含两个代理作业,我将其称为作业 A 和作业 B。我希望这些作业同时运行,但如果作业 A 失败,那么我不需要作业 B 运行完成。

有没有办法向作业 A 添加一个任务,如果作业 A 的任何任务失败,该任务将取消作业 B(或者,以“失败”状态终止整个管道)?

azure-devops azure-pipelines

4
推荐指数
1
解决办法
4002
查看次数

使用Javascript/jQuery重新检测IE6

我需要检测IE6才能解决缺少位置的问题:修复.我一直在使用一个简单的正则表达式:

var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
Run Code Online (Sandbox Code Playgroud)

除了浏览器声称同时属于IE6和IE7的用户外,这几乎一直都有效:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)
Run Code Online (Sandbox Code Playgroud)

辉煌.

我喜欢使用jquery.support,但看起来它不支持查询position:fixed是否可用.所以我回来检测IE6.

有各种建议的解决方案,例如寻找maxHeight的存在.但那些似乎相当随意并吓到我 - 如果上面的正则表达式有例外,我怎么能确定maxHeight没有例外?

我正在考虑使用条件评论 - 至少它是IE本身声称是IE6,而不是黑客.就像是:

<!--[if IE 6]>
<SCRIPT> var isIE6 = true; </SCRIPT>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

或者,可以直接测试position:fixed是否可用,但这看起来有点沉重.

我的条件评论方法不起作用的任何原因?有更好的方法吗?

javascript css jquery internet-explorer-6 browser-feature-detection

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

使用导航器对象/用户代理嗅探检测IE版本的缺点

随着jQuery 2.0发布,已经有很多关于如何识别用户是否正在使用支持它的IE版本的讨论(jQuery 2.0仅支持IE9及更高版本).

我的问题是,为什么像一个解决方案这样:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());
Run Code Online (Sandbox Code Playgroud)

比查看navigator对象更受欢迎:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure. …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer cross-browser browser-feature-detection

3
推荐指数
1
解决办法
997
查看次数

检查浏览器是否支持`.textContent`的最佳方法?

我想检查浏览器是否支持 .textContent

我想过这些选择:

  1. if( document.body.textContent ) { }
  2. if( document.createElement('div').textContent !== void(0) ) { }

当然,第一个更简单,但我看到的问题是浏览器可能计算所有字符串,如果网站很大,这可能会很慢.

然后,我应该选择哪一个?或者有更好的选择吗?

编辑:我创建了一个jsperf

javascript performance dom browser-feature-detection

3
推荐指数
1
解决办法
1505
查看次数

javascript检测桌面触摸和鼠标支持

具有触控功能的设备应如何区分纯触控和具有鼠标功能的设备?(就像今天的一些笔记本电脑)

需要在应用程序中优先考虑所有鼠标功能,如果运行应用程序的设备仅具有触摸支持,则需要更改功能.

如果触摸设备也有鼠标指针,逻辑建议应用程序应该将该设备视为普通桌面,并且可能还添加触摸支持,但样式本身应该响应鼠标事件.

正常的触摸检测是这样实现的: 'ontouchend' in document;

检测计算机是否为台式机的一种方法可能是检查屏幕分辨率:

window.screen.width >= 1280 // desktop 
Run Code Online (Sandbox Code Playgroud)

但这并不是那么好,因为有些设备可能具有非常大的视口分辨率,而某些笔记本电脑可能具有低分辨率......

javascript touch browser-feature-detection

3
推荐指数
1
解决办法
3082
查看次数

打开卡片显示内容,将激活器悬停在materializecss中

我尝试通过鼠标悬停激活器内容以几种不同的方式打开卡片显示内容,但它们都没有工作.以下是我在下面的代码段中的代码的工作示例.

<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">


    <div class="card">
      <div class="card-image waves-effect waves-block waves-light">
        <img class="activator" src="https://s19.postimg.org/rs95dw3b7/beautiful-flower-pictures-and-wallpapers-2.jpg">
      </div>

      <!-- card text content -->
      <div class="card-content">
        <span class="card-title activator">
      <p>Name of the listing</p>
    </span>
        <p>$10.00</p>
        <div class="card-content">
          <a href="#" class="waves-effect waves-light btn right bottom">view item</a>
        </div>
      </div>

      <!--   card reveal content -->
      <div class="card-reveal">
        <span class="card-title">
      <i class="fa fa-times right"></i>
      <div>Name</div> 
    </span>
        <p>this is the data in the card reveal content</p>
        <div>
          <a href="#" class="waves-effect …
Run Code Online (Sandbox Code Playgroud)

html css jquery materialize

3
推荐指数
1
解决办法
4058
查看次数

如何在Mac上安装elixir dev版本

我用来brew install elixir 在 Mac 上安装 Elixir。v1.5.2它适用于目前发布的版本。如何像Elixir >= 1.6.0-dev在 Mac 上一样安装 dev 版本?

elixir

3
推荐指数
1
解决办法
909
查看次数