以编程方式使用w3c css / html验证器和自定义html

时间:2017-05-26 16:42:50

标签: javascript validation web-crawler

修改

我已经让它适用于CSS,只能进行HTML验证。

let css = Array.from(document.styleSheets)
        .reduce((combinedsheet,sheet) => sheet.rules? 
          combinedsheet + Array.from(sheet.rules)
            .reduce((p,c) => p+c.cssText+'\n', ''):
          combinedsheet, '')        
      try {
        document.querySelector('a.validation.css').href = 
          'https://jigsaw.w3.org/css-validator/validator?text=' +
          encodeURIComponent(css) +
          '&profile=css3&usermedium=all&warning=1&vextwarning='

        document.querySelector('a.validation.html').href = 
          'https://validator.w3.org/nu/?doc=' +
          encodeURIComponent(document.querySelector('html'))
      } catch (e) {
        // this will fail before page fully loads, and we can be silent about that
      }

编辑#2

我已经开始工作了。唯一的问题是,它使用“弹出窗口”而不是像target="blank"那样静默打开窗口。我正在使用onlick方法:

get_html_validation: function () {
    let fd = new FormData()
    fd.append('fragment', '<!DOCTYPE html>' + 
      document.querySelector('html').outerHTML)
    fd.append('prefill', 0)
    fd.append('doctype', 'Inline')
    fd.append('prefill_doctype', 'html401')
    fd.append('group', 0)

    axios.post("https://validator.w3.org/nu/#textarea", fd)
      .then(response => {
        let win=window.open('about:blank')
        console.log(win)
        with(win.document)
        {
          open()
          write(response.data)
          close()
        }
      })
      .catch(e => console.error(e))
  }   

原始

我想以编程方式使用这些验证器:

- 只要文档没有操作dom的javascript,它们就可以正常工作。但是......我的确如此。

如何在浏览器中使用javascript检查这些网站自定义html?我正在做类似的事情:

onValidateDOM = () => {
  let toValidate = '<!DOCTYPE html>' + document.querySelector('html').outerHTML
  let returnURLs = []
  returnURLs.push(w3cCSS.validate(toValidate), w3cHTML.validate(toValidate)
  return returnURLs
}

1 个答案:

答案 0 :(得分:1)

将传递给toValidate的{​​{1}}设置为encodeURIComponent()查询

的值
doc=