當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript index-next.getAttribute函數代碼示例

本文整理匯總了TypeScript中dom5/lib/index-next.getAttribute函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript getAttribute函數的具體用法?TypeScript getAttribute怎麽用?TypeScript getAttribute使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了getAttribute函數的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: ScannedScriptTagImport

    const myVisitor: HtmlVisitor = (node) => {
      if (isJsScriptNode(node)) {
        const src =
            dom5.getAttribute(node, 'src') as FileRelativeUrl | undefined;
        if (src) {
          features.push(new ScannedScriptTagImport(
              src,
              document.sourceRangeForNode(node)!,
              document.sourceRangeForAttributeValue(node, 'src')!,
              {language: 'html', node, containingDocument: document},
              dom5.getAttribute(node, 'type') === 'module'));
        } else {
          const locationOffset =
              getLocationOffsetOfStartOfTextContent(node, document);
          const attachedCommentText = getAttachedCommentText(node) || '';
          const contents = dom5.getTextContent(node);

          features.push(new ScannedInlineDocument(
              'js',
              contents,
              locationOffset,
              attachedCommentText,
              document.sourceRangeForNode(node)!,
              {language: 'html', node, containingDocument: document}));
        }
      }
    };
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:27,代碼來源:html-script-scanner.ts

示例2: createLinks

export function createLinks(
    urlResolver: UrlResolver,
    html: string,
    baseUrl: ResolvedUrl,
    deps: Set<ResolvedUrl>,
    absolute: boolean = false): string {
  const ast = parse5.parse(html, {locationInfo: true});
  const baseTag = dom5.query(ast, dom5.predicates.hasTagName('base'));
  const baseTagHref = baseTag ? dom5.getAttribute(baseTag, 'href') : '';

  // parse5 always produces a <head> element.
  const head = dom5.query(ast, dom5.predicates.hasTagName('head'))!;
  for (const dep of deps) {
    let href;
    if (absolute && !baseTagHref) {
      href = absUrl(urlResolver.relative(dep));
    } else {
      href = urlResolver.relative(baseUrl, dep);
    }
    const link = dom5.constructors.element('link');
    dom5.setAttribute(link, 'rel', 'prefetch');
    dom5.setAttribute(link, 'href', href);
    dom5.append(head, link);
  }
  dom5.removeFakeRootElements(ast);
  return parse5.serialize(ast);
}
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:27,代碼來源:prefetch-links.ts

示例3: addCustomElementsEs5Adapter

export function addCustomElementsEs5Adapter(html: string): string {
  // Only modify this file if we find a web components polyfill. This is a
  // heuristic to identify the entry point HTML file. Ultimately we should
  // explicitly transform only the entry point by having the project config.
  if (!webcomponentsLoaderRegex.test(html)) {
    return html;
  }
  const parsed = parse5.parse(html, {locationInfo: true});
  const script = dom5.query(parsed, webcomponentsLoaderMatcher);
  if (!script) {
    return html;
  }

  // Collect important dom references & create fragments for injection.
  const loaderScriptUrl = dom5.getAttribute(script, 'src')!;
  const adapterScriptUrl =
      url.resolve(loaderScriptUrl, 'custom-elements-es5-adapter.js');
  const es5AdapterFragment = parse5.parseFragment(`
    <script>if (!window.customElements) { document.write('<!--'); }</script>
    <script type="text/javascript" src="${adapterScriptUrl}"></script>
    <!--! do not remove -->
`);

  dom5.insertBefore(script.parentNode!, script, es5AdapterFragment);
  return parse5.serialize(parsed);
}
開發者ID:Polymer,項目名稱:polymer-build,代碼行數:26,代碼來源:custom-elements-es5-adapter.ts

示例4: transformEsModuleToAmd

function transformEsModuleToAmd(
    script: dom5.Node, idx: number, jsOptions: JsTransformOptions|undefined) {
  // We're not a module anymore.
  dom5.removeAttribute(script, 'type');

  if (scriptWasSplitByHtmlSplitter(script)) {
    // Nothing else to do here. If we're using HtmlSplitter, the JsTransformer
    // is responsible for doing this transformation.
    return;
  }

  const isExternal = dom5.hasAttribute(script, 'src');
  if (isExternal) {
    const src = dom5.getAttribute(script, 'src');
    dom5.removeAttribute(script, 'src');
    dom5.setTextContent(script, `define(['${src}']);`);

  } else {
    // Transform inline scripts with the AMD Babel plugin transformer.
    const newJs = jsTransform(dom5.getTextContent(script), {
      ...jsOptions,
      transformModulesToAmd: true,
      moduleScriptIdx: idx,
    });
    dom5.setTextContent(script, newJs);
  }
}
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:27,代碼來源:html-transform.ts

示例5: visit

 await visit((node) => {
   if (isCssImportNode(node)) {
     const href = dom5.getAttribute(node, 'href')! as FileRelativeUrl;
     imports.push(new ScannedImport(
         'css-import',
         href,
         document.sourceRangeForNode(node)!,
         document.sourceRangeForAttributeValue(node, 'href')!,
         {language: 'html', node, containingDocument: document},
         false));
   }
 });
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:12,代碼來源:css-import-scanner.ts

示例6: visit

 await visit((node) => {
   let lazy: boolean;
   if (isHtmlImportNode(node)) {
     lazy = false;
   } else if (isLazyImportNode(node)) {
     lazy = true;
   } else {
     return;
   }
   const href = dom5.getAttribute(node, 'href')! as FileRelativeUrl;
   imports.push(new ScannedImport(
       type,
       href,
       document.sourceRangeForNode(node)!,
       document.sourceRangeForAttributeValue(node, 'href')!,
       {language: 'html', node, containingDocument: document},
       lazy));
 });
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:18,代碼來源:html-import-scanner.ts

示例7: transformEsModuleToAmd

function transformEsModuleToAmd(
    script: dom5.Node, idx: number, jsOptions: JsTransformOptions|undefined) {
  // We're not a module anymore.
  dom5.removeAttribute(script, 'type');

  if (scriptWasSplitByHtmlSplitter(script)) {
    // Nothing else to do here. If we're using HtmlSplitter, the JsTransformer
    // is responsible for doing this transformation.
    return;
  }

  // Module scripts execute in order. AMD modules don't necessarily preserve
  // this ordering. To emulate the ordering, we construct an artificial
  // dependency chain between all module scripts on the page.
  const generatedModule = generateModuleName(idx);
  const previousGeneratedModule =
      idx === 0 ? undefined : generateModuleName(idx - 1);

  const isExternal = dom5.hasAttribute(script, 'src');
  if (isExternal) {
    const deps = [];
    if (previousGeneratedModule !== undefined) {
      deps.push(previousGeneratedModule);
    }
    const externalSrc = dom5.getAttribute(script, 'src');
    deps.push(externalSrc);
    const depsStr = deps.map((dep) => `'${dep}'`).join(', ');
    dom5.removeAttribute(script, 'src');
    dom5.setTextContent(script, `define('${generatedModule}', [${depsStr}]);`);

  } else {
    // Transform inline scripts with the AMD Babel plugin transformer.
    const newJs = jsTransform(dom5.getTextContent(script), {
      ...jsOptions,
      transformModulesToAmd: true,
      moduleScriptIdx: idx,
    });
    dom5.setTextContent(script, newJs);
  }
}
開發者ID:Polymer,項目名稱:polymer-build,代碼行數:40,代碼來源:html-transform.ts

示例8: _transformIter

  protected async *
      _transformIter(files: AsyncIterable<File>): AsyncIterable<File> {
    for await (const file of files) {
      if (file.path !== this.filePath) {
        yield file;
        continue;
      }

      const contents = await getFileContents(file);
      const parsed = parse5.parse(contents, {locationInfo: true});
      const base = dom5.query(parsed, baseMatcher);
      if (!base || dom5.getAttribute(base, 'href') === this.newHref) {
        yield file;
        continue;
      }

      dom5.setAttribute(base, 'href', this.newHref);
      dom5.removeFakeRootElements(parsed);
      const updatedFile = file.clone();
      updatedFile.contents = Buffer.from(parse5.serialize(parsed), 'utf-8');
      yield updatedFile;
    }
  }
開發者ID:Polymer,項目名稱:tools,代碼行數:23,代碼來源:base-tag-updater.ts

示例9: async

 const visitor = async (node: ASTNode) => {
   if (isStyleNode(node)) {
     const tagName = node.nodeName;
     if (tagName === 'link') {
       const href = dom5.getAttribute(node, 'href')! as FileRelativeUrl;
       features.push(new ScannedImport(
           'html-style',
           href,
           document.sourceRangeForNode(node)!,
           document.sourceRangeForAttributeValue(node, 'href')!,
           {language: 'html', node, containingDocument: document},
           true));
     } else {
       const contents = dom5.getTextContent(node);
       const locationOffset =
           getLocationOffsetOfStartOfTextContent(node, document);
       const commentText = getAttachedCommentText(node) || '';
       features.push(new ScannedInlineDocument(
           'css',
           contents,
           locationOffset,
           commentText,
           document.sourceRangeForNode(node)!,
           {language: 'html', node, containingDocument: document}));
     }
   }
   // Descend into templates.
   if (node.tagName === 'template') {
     const content = treeAdapters.default.getTemplateContent(node);
     if (content) {
       for (const n of dom5.depthFirst(content)) {
         visitor(n);
       }
     }
   }
 };
開發者ID:MehdiRaash,項目名稱:tools,代碼行數:36,代碼來源:html-style-scanner.ts

示例10: htmlTransform

export function htmlTransform(
    html: string, options: HtmlTransformOptions): string {
  if (options.js && options.js.moduleResolution === 'node' &&
      !options.js.filePath) {
    throw new Error('Cannot perform node module resolution without filePath.');
  }

  const document = parse5.parse(html, {
    locationInfo: true,  // Required for removeFakeNodes.
  });
  removeFakeNodes(document);
  const allScripts = [...dom5.queryAll(document, isJsScript)];

  const shouldTransformEsModuleToAmd = options.js &&
      options.js.transformModulesToAmd &&
      // Assume that if this document has a nomodule script, the author is
      // already handling browsers that don't support modules, and we don't
      // need to transform them (even if the configuration was set).
      // TODO(aomarks) Check this for HtmlSplitter case too.
      !allScripts.some((node) => dom5.hasAttribute(node, 'nomodule'));

  let wctScript, firstModuleScript, finalModuleScript;
  let moduleScriptIdx = 0;

  for (const script of allScripts) {
    const isModule = dom5.getAttribute(script, 'type') === 'module';
    if (isModule) {
      if (firstModuleScript === undefined) {
        firstModuleScript = script;
      }
      finalModuleScript = script;
      if (shouldTransformEsModuleToAmd) {
        transformEsModuleToAmd(script, moduleScriptIdx++, options.js);
        continue;  // Bypass the standard jsTransform below.
      }
    }

    const isInline = !dom5.hasAttribute(script, 'src');
    if (isInline) {
      // Note that scripts split by HtmlSplitter are always external, so we
      // don't have to check for that case here.
      const newJs = jsTransform(
          dom5.getTextContent(script),
          {...options.js, transformModulesToAmd: false});
      dom5.setTextContent(script, newJs);

    } else if (wctScript === undefined) {
      const src = dom5.getAttribute(script, 'src') || '';
      if (src.includes('web-component-tester/browser.js') ||
          src.includes('wct-browser-legacy/browser.js')) {
        wctScript = script;
      }
    }
  }

  if (shouldTransformEsModuleToAmd && finalModuleScript !== undefined) {
    // We've defined a bunch of modules and chained them together. Now we need
    // to initiate loading the chain by requiring the final one.
    const finalModuleName = generateModuleName(moduleScriptIdx - 1);
    const fragment = parse5.parseFragment(
        `<script>require(['${finalModuleName}']);</script>`);
    dom5.insertAfter(
        finalModuleScript.parentNode!, finalModuleScript, fragment);
  }

  if (options.injectAmdLoader && shouldTransformEsModuleToAmd &&
      firstModuleScript !== undefined) {
    const fragment = parse5.parseFragment('<script></script>\n');
    dom5.setTextContent(fragment.childNodes![0], getMinifiedRequireJs());
    const requireJsScript = fragment.childNodes![0];

    // Inject as late as possible (just before the first module is declared, if
    // there is one) because there may be some UMD dependencies that we want to
    // continue to load in global mode instead of AMD mode (which is detected by
    // the presence of the `require` global).
    dom5.insertBefore(
        firstModuleScript.parentNode!, firstModuleScript, fragment);

    if (wctScript !== undefined) {
      addWctTimingHack(wctScript, requireJsScript);
    }
  }

  if (options.injectBabelHelpers) {
    const fragment = parse5.parseFragment('<script></script>\n');
    dom5.setTextContent(fragment.childNodes![0], getMinifiedBabelHelpers());

    const firstJsScriptOrHtmlImport =
        dom5.query(document, isJsScriptOrHtmlImport);
    if (firstJsScriptOrHtmlImport) {
      dom5.insertBefore(
          firstJsScriptOrHtmlImport.parentNode!,
          firstJsScriptOrHtmlImport,
          fragment);

    } else {
      const headOrDocument =
          dom5.query(document, dom5.predicates.hasTagName('head')) || document;
      dom5.append(headOrDocument, fragment);
    }
//.........這裏部分代碼省略.........
開發者ID:Polymer,項目名稱:polymer-build,代碼行數:101,代碼來源:html-transform.ts


注:本文中的dom5/lib/index-next.getAttribute函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。