书签脚本问题

3

我正在尝试运行这个书签工具,但我在Chrome中遇到了这个错误:

未捕获的语法错误:意外的标识符

我不知道我的JavaScript代码在 href 中有什么问题。我不能将其放在单独的文件中,我需要在 href 中运行它。

    <a href="javascript:(function(){
      if (!($ = window.jQuery)) { 
        script = document.createElement( 'script' );
        script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
        script.onload=releasetheScript;
        document.body.appendChild(script);
      } 
      else {
        releasetheScript();
      }
    
      function releasetheScript() {
        
        regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur']
        banned = ['|(?!', 'sex', 'porn']
        target = regex.join('|') + banned.join('|') + ')';
        interval = 10000
        a = setInterval(function () {
          window.scrollTo(0,document.body.scrollHeight);
          var fields = $('.ProfileCard-userFields');
          for (var i = 0; i < fields.length; i++) {
            var p = fields[i].getElementsByClassName('ProfileCard-bio');
            if (p[0].textContent.length > 1) {
              if (p[0].textContent.match(new RegExp(target), 'g') !== null) {
                console.log(p[0].textContent, 'text matching')
              }
            }
          }
        }, interval);
      }
    })()">Bookmarklet</a>


1
你尝试过从 JavaScript 代码中删除所有空格吗? - inquizitive
你尝试过将代码中的é字符删除后测试吗?有没有尝试在哪些浏览器上运行这段代码? - freginold
我正在使用 Chrome 浏览器。 - Nizar AYARI
2个回答

3
您的书签脚本将作为单行脚本运行,因此分号不可省略。您的脚本失败是因为缺少分号。
两个注意事项:
- 您的代码似乎没有理由使用隐式全局变量。请使用var声明变量。 - 最好从脚本URL以//开头,而不是http://,以确保无论本地页面的协议如何,都会加载该脚本。

<a href="javascript:(function(){
  if (!window.$ || window.$ !== window.jQuery) { 
    var script = document.createElement( 'script' );
    script.src = '//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
    script.onload=releasetheScript;
    document.body.appendChild(script);
  } 
  else {
    releasetheScript();
  }

  function releasetheScript() {
    /* v--- need a semicolon on this line */
    var regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur']; 
    var banned = ['|(?!', 'sex', 'porn'];  /* <-- here  */
    var target = regex.join('|') + banned.join('|') + ')';
    var interval = 10000;    /* <-- here  */
    var a = setInterval(function () {
      window.scrollTo(0,document.body.scrollHeight);
      var fields = $('.ProfileCard-userFields');
      for (var i = 0; i < fields.length; i++) {
        var p = fields[i].getElementsByClassName('ProfileCard-bio');
        if (p[0].textContent.length > 1) {
          if (p[0].textContent.match(new RegExp(target), 'g') !== null) {
            console.log(p[0].textContent, 'text matching');  /* <-- and here  */
          }
        }
      }
    }, interval);
  }
})()">Bookmarklet</a>


1
在所有语句的末尾添加分号,ASI没有填写你需要的地方。我不打算费力去弄清楚为什么,只要养成始终使用它们的习惯即可。

    <a href="javascript:(function(){
      if (!($ = window.jQuery)) { 
        script = document.createElement( 'script' );
        script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
        script.onload=releasetheScript;
        document.body.appendChild(script);
      } 
      else {
        releasetheScript();
      }
    
      function releasetheScript() {
        
        regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur'];
        banned = ['|(?!', 'sex', 'porn'];
        target = regex.join('|') + banned.join('|') + ')';
        interval = 10000;
        a = setInterval(function () {
          window.scrollTo(0,document.body.scrollHeight);
          var fields = $('.ProfileCard-userFields');
          for (var i = 0; i < fields.length; i++) {
            var p = fields[i].getElementsByClassName('ProfileCard-bio');
            if (p[0].textContent.length > 1) {
              if (p[0].textContent.match(new RegExp(target), 'g') !== null) {
                console.log(p[0].textContent, 'text matching')
              }
            }
          }
        }, interval);
      }
    })()">Bookmarklet</a>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接