小编Ali*_*gat的帖子

使用带有模糊的 setSelectionRange - Chrome 和 Safari 中的差异

我正在尝试修复具有 onblur 事件侦听器的代码,该事件侦听器执行 setSelectionRange。我注意到,在 Chrome 上使用此功能时,模糊事件会将光标移动到下一个选项卡索引。然而,在 safari 上,光标保留在同一元素上,并且光标移动到 setSelectionRange 中指定的位置。

问题

  1. 在执行模糊事件时我是否应该使用 setSelectionRange ?
  2. 有什么方法可以在两个浏览器上一致地使用 setSelectionRange 即我可以使 Safari 以与 Chrome 相同的方式工作吗?

下面是一段 hello world 代码,显示了当我在 Safari 和 Chrome 中按 Tab 键移出某个字段时,光标的行为有何不同:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script>
    function handleBlur() {
      event.target.setSelectionRange(1,1)
    };
  </script>
</head>
<body>
  <input value="First Name" onblur="handleBlur()">
  <input value="Last Name" onblur="handleBlur()">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript safari google-chrome html-input reactjs

5
推荐指数
0
解决办法
415
查看次数

Jenkinsfile - Script Pipeline语法中的条件阶段执行

我们正在使用Script Pipeline语法,Jenkinsfile它有很多阶段定义来构建和部署我们的代码.我有一个用例,如果我正在进行完整构建,我想运行所有阶段,但如果我需要执行一些AWS路由,则只运行一个特定阶段.我知道我可以使用if(<expression>)跳过舞台或跑舞台.问题是我不想将这个if条件应用到我的每个阶段Jenkinsfile.

在新的Declarative Pipeline语法中,使用该stage..when选项很容易实现.我们的基础结构中使用了很多自定义Groovy辅助函数,所以此时我无法从Script Pipeline语法切换到新的Declarative Pipeline语法.我最终在现有Jenkinsfile的东西上做的是这样的......

原来詹金斯文件

  stage('Checkout Code') {}
  stage('Build') {}
  parallel(
    stage('Sonar Analysis') {}
    stage('CLM Analysis') {}
    stage('Security Analysis') {}
  )
  stage('Build Docker Image') {}
  ...
  ...
  stage('QA Deploy') {}
  stage('QA Routing') {}
  ...
  ...
  stage('Prod Deploy') {}
  stage('Prod Routing') {}
Run Code Online (Sandbox Code Playgroud)

变成

  if (fullDeploy){
    stage('Full Build') {
        stage('Checkout Code') {}
        stage('Build') {}
        parallel(
          stage('Sonar Analysis') {} …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

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