标签: script-tag

Recaptcha - 脚本标签注入偶尔失败

我有一个使用reCAPTCHA的表单.出于某种原因,当用户使用不正确的重新捕获值提交此表单时,重新呈现页面时,重新捕获无法呈现.

看起来它发生的是重新捕获尝试注入"脚本"标记,偶尔(并且仅在某些浏览器,某些环境和某些情况下),它未能将"脚本"标记添加到DOM.

它发生如下:

1)表单中嵌入了一些嵌入式javascript,如下所示:

https://www.google.com/recaptcha/api/challenge?k=<our public key>
Run Code Online (Sandbox Code Playgroud)

2)该脚本正确执行并返回以下内容:

var RecaptchaState = {
 site : <some value>,
 challenge : <challenge key>,
 is_incorrect : false,
 programming_error : '',
 error_message : '',
 server : 'https://www.google.com/recaptcha/api/',
 timeout : 18000
};

document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
Run Code Online (Sandbox Code Playgroud)

3)之后通常会发生的事情是,脚本标记被注入页面,recaptcha.js被加载,它将读取RecaptchaState以调用recaptcha来获取要渲染的图像.

但是,在某些情况下,由于某种原因,应该在2)中添加的脚本标记似乎永远不会添加到DOM中,因此从不加载recaptcha.js,因此从不呈现recaptcha!在页面呈现后,我可以在控制台中看到"RecaptchaState"存在且具有正确的值,只是没有脚本标记.

所以这就是正在发生的事情,我真的很难过为什么.我只能在Firefox中重现这一点,奇怪的是,它只在某些条件下发生.例如,如果我通过fiddler路由请求,它每次都会工作,永远不会失败.如果我在提交请求之前清除缓存,它将每次都有效.有时,当我期待它失败时,它会起作用,反之亦然.所以这是非常零星的.

所以我的想法是,它可能与js加载的时间有关,这会干扰"document.write"语句.也许其他一些javascript正在干扰它或类似的东西.只是寻找一些关于如何尝试解决这个问题的一般性想法,我可以运行的测试,我可以寻找的东西,或任何真实的想法.

提前致谢

更新

仍然没有运气搞清楚这一点.有人以为我有......我们在firebug控制台中看不到任何错误消息,表明任何事情都会出错,尽管事情显而易见.我们可以使用任何实用程序来仔细查看Firefox中究竟发生了什么吗?我正在考虑像Chrome的"Speed-Tracer"这样的东西,它为您提供非常详细的活动时间表.这里唯一的问题是我们无法在Chrome中重现它.

javascript dom script-tag recaptcha

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

为什么script.onload无法在Chrome用户手册中使用?

我想使用用户脚本在站点中加载另一个脚本文件.但是,js.onload事件无法正常工作.

用户脚本文件:

// ==UserScript==
// @name           Code highlight
// @description    Test
// @include        http://localhost/*
// @version        1.0
// ==/UserScript==

var js = document.createElement('script');
    js.src = "http://localhost/test/js/load.js";
    document.getElementsByTagName("head")[0].appendChild(js);
    js.onload = function(){
        console.log(A)
    }
Run Code Online (Sandbox Code Playgroud)

load.js文件:

var A = {
    name:'aa'
}
Run Code Online (Sandbox Code Playgroud)


在Chrome中,控制台输出"undefined",但load.js已完全加载.

我在Firefox中进行了测试,输出A正确.

javascript google-chrome script-tag userscripts

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

Yesod-如何使addScriptRemote在头部添加脚本?

在Yesod / Haskell中,我想调用addScriptRemote并将其添加<script>到头部。照原样,似乎只将脚本添加到主体部分。

haskell script-tag yesod yesod-forms

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

一些JS脚本在Chrome中加载但在Firefox中没有

我的网站上有一些外部脚本存在一些奇怪的问题.我终于把它归结为这个片段了.

<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js" onload="console.log('conversion')"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" onload="console.log('jquery')"></script>
Run Code Online (Sandbox Code Playgroud)

在firefox中加载这个只有第二个脚本加载,而使用chrome,都加载.这是在OSX上使用最新的浏览器.

现在,如果我将crossorigin属性添加到两个脚本,那么它将停止在chrome中使用此错误Script from origin 'http://www.googleadservices.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.example.com:3000' is therefore not allowed access.

现在的脚本是

<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js" onload="console.log('12123')" crossorigin async></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" onload="console.log('123')" async crossorigin></script>
Run Code Online (Sandbox Code Playgroud)

我对这种行为上的差异感到震惊.这是因为firefox比CHrome更严格吗?这是我设置的地方吗?或者这是Firefox/Chrome方面的错误?

另外,我应该与供应商讨论如何为CORS设置js?令我印象深刻的是谷歌失败了,但我还有另一个资源破裂.

通过权利,MDN声称script标签不受同一原产地政策的限制.

html firefox google-chrome script-tag cors

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

如何将<script>放在框架集文档的"正文"中?

通常我们将JavaScript <script>标记放在HTML文档的底部,就在结束</body>标记之前,这样做的好处是它们在DOM中已经可用的所有元素之后执行,还有更多的东西.

但是,我使用的是框架文档 1,<frameset>而不是<body>标签.我不想把它们放在<head>文档中,因为它们不能立即访问3以下的DOM元素.而且我不想<iframe>在标准身体标签中使用s 4.我试过了

<head>
  <title>Framesets are interesting</title>
</head>
<frameset cols="50%,50%">
  <frame id="frame-a" src="a.html">
  <frame id="frame-b" src="b.html">
  <script type="text/javascript">
    console.log("hello world!");
    console.log(document.getElementById("frame-a")); // this is what I'm after
  </script>
</frameset>
Run Code Online (Sandbox Code Playgroud)

但是,脚本根本没有执行,甚至没有出现在DOM检查器中.当然,一个<frameset>可能只包含<frame><noframes>标签.但是,<frame>标签之后真的没有办法让脚本执行吗?

仅供参考,将它们放置在</frameset> 有时用<body>s 完成后也不起作用.

1:是的,我知道他们已被弃用了.它们只是我项目的自然选择2,一个简洁的并排视图,显示两个文档并以复杂的方式将它们滚动在一起.
2:......之前我从未使用过它们,所以我想尝试一下.
3:这就是我最终的结果,毕竟一个onload处理程序是微不足道的.问题仍然存在,我很好奇.
4:工作正常,但需要复杂的CSS样式

html javascript frames frameset script-tag

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

动态插入脚本标签?

所以我有这个脚本标签

 <script async="async" data-cfasync="false" src=""></script>
Run Code Online (Sandbox Code Playgroud)

我希望能够动态插入。我试过将它设置为一个变量,

 let scriptTag = '<script async="async" data-cfasync="false" src=""></script>';
Run Code Online (Sandbox Code Playgroud)

并使用 innerHTML 将其添加到我的内容 div 中,但这似乎不起作用。我知道我这样做是非常错误的,我的一部分认为这可能是不可能的。

我想这样做的原因是为了测试目的,我可以打开和关闭广告,这样我在测试期间的观点就不会影响分析,这是我应该担心的事情还是可以忽略不计。我只知道我已经被禁止使用 chartboost,而没有打开和关闭广告的测试变量。

编辑:是的,这与其他问题类似,但这些问题没有使用“data-cfasync”等属性解决。Mandalina 和 supra28 把它钉在了头上。

html javascript script-tag

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

如何使用rails javascript helpers将"data-main"属性添加到脚本标记中?

Require-js通常在脚本标记上使用名为"data-main"的属性.有没有办法告诉Rails的javascript标签助手添加它,还是我应该以老式的方式做到这一点?

javascript ruby ruby-on-rails include script-tag

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

运行脚本标签是否阻止其他脚本标签下载?

这是从的index.htmlHTML5样板,只是前</body>标签:

<!-- JavaScript at the bottom for fast page loading: http://developer.yahoo.com/performance/rules.html#js_bottom -->

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.7.2.min.js"><\/script>')</script>

<!-- scripts concatenated and minified via build script -->
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- end scripts -->

<!-- Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site's ID.
     mathiasbynens.be/notes/async-analytics-snippet -->
<script>
  var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
  (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
  g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
  s.parentNode.insertBefore(g,s)}(document,'script'));
</script> …
Run Code Online (Sandbox Code Playgroud)

html javascript optimization script-tag

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

从脚本src中删除引用

我正在做一个远程脚本-src

<script src="http://thirdparty.com/test.js"></script>
Run Code Online (Sandbox Code Playgroud)

我不想将我的http referer标头发送到thirdparty.com.我该怎么做?

html http-referer script-tag

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

关于 xml &lt;script&gt; 元素的未转义字符的错误 IntelliJ 警告

我有一个 XML 文件,看起来像

<script>
    <foo>bar</foo>
</script>
Run Code Online (Sandbox Code Playgroud)

这不是 HTML,并且该标记与HTML 脚本标记<script>无关。(与这个问题不同)

但是 IntelliJ(版本 2016.2)错误地显示有关 的子元素的第一个括号的未转义 XML 字符的警告<script>。IntelliJ 将 this 误认为 HTML 脚本标签?我怎样才能防止这种情况发生?

无论是否存在诸如 之类的标头,都会出现警告<?xml version="1.0" ?>

xml intellij-idea script-tag code-inspection

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