小编Mar*_*zzo的帖子

如何使用新的 Google Analytics 4 (gtag.js) 跟踪和发送自定义事件?

我有一个旧网站,使用的是过去十年的旧 Google Analytics(分析)代码,我需要使用新 GA4 的帮助。

旧代码 (2016)

要将自定义事件和综合浏览量发送到 Google,我将使用ga()<script>代码片段中的全局函数:

// Event
ga('send', 'event', {
    eventAction: 'click',
    eventCategory: 'social',
    eventLabel: 'twitter'
});

// Pageview
ga('send', {
    hitType: 'pageview',
    page: 'Video page',
    title: 'Intro video'
});
Run Code Online (Sandbox Code Playgroud)

新准则 (2022)

Google Analytics 表示所有旧属性将于 2023 年 7 月 1 日停止工作,因此我们需要切换到新的 Google Analytics 4 属性,<script>标头中的代码段发生了一些变化,现在它创建gtag()

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=X-XXX123456"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date()); …
Run Code Online (Sandbox Code Playgroud)

javascript google-analytics google-analytics-4

18
推荐指数
2
解决办法
1万
查看次数

用于归一化0 - 1中任何数字的函数

我正在尝试创建一个函数,它接受一个数字并将其从最小和最大边界之间的0 - 1标准化.例如:

如果我想将值10标准化为5到15之间,我称之为:

val = 10; normalize(val, 5, 15); 返回0.5

将值0标准化为-10到5之间

val = 0; normalize(val, -10, 5); 返回0.666

这是我提出的功能:

function normalize(val, min, max){
  // Shift to positive to avoid issues when crossing the 0 line
  if(min < 0){
    max += 0 - min;
    val += 0 - min;
    min = 0;
  }
  // Shift values from 0 - max
  val = val - min;
  max = max - min;
  return Math.max(0, Math.min(1, val / max));
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是规范化一维值的最有效方法吗?我将以每帧60fps的速度调用此函数几千次,因此我希望尽可能优化它以减少计算负担.我已经找到了归一化公式,但我找到的只是二维或三维解.

javascript math performance normalization

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

将自定义文本添加到有序列表<li>

我正在尝试使用<ol><li>创建一个有序的烹饪方向列表.但是,我需要在每次自动计算之前添加文本"Step",使其如下所示:

<ol>
    <li>Place bag in freezer, etc...</li>
    <li>Preheat oven</li>
</ol>
Run Code Online (Sandbox Code Playgroud)

步骤1.将袋子放入冰箱等......

步骤2.预热烤箱


我尝试:before在CSS中使用选择器,但它将自定义文本"Step"放在自动计算和内容之间.这是我的CSS:

li:before{
    content: "Step ";
    font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

这就是结果

1.将袋放入冰箱等处...

2.步骤预热烤箱

有没有办法修改默认行为,以便自动列出"步骤1","步骤2"等?

html css

9
推荐指数
1
解决办法
8144
查看次数

在Bootstrap轮播中强制指示方向

我有以下幻灯片:0 1 2 3 4我希望旋转木马从3变为0,同时看起来像是向前滑动到0,而不是'后退'到0;

这将从"3"滑回"0":

$("#my-carousel").carousel(slideNum);
Run Code Online (Sandbox Code Playgroud)

我可以通过使用强制方向next,但它将显示从3到4,我不想要:

$("#my-carousel").carousel('next');
Run Code Online (Sandbox Code Playgroud)

通过强制你想要它滑动的方向,可以从3变为0吗?我正在寻找类似的东西:

$("#my-carousel").carousel(slideNum, direction);
Run Code Online (Sandbox Code Playgroud)

javascript jquery twitter-bootstrap

7
推荐指数
1
解决办法
2259
查看次数

Chrome iOS 上的 viewport-fit=cover 有解决办法吗?

您好,我想知道 safari 的 viewport-fit=cover 是否有解决方法或等效方法将网站扩展到 iPhone 缺口之外,但适用于 Chrome。

<meta name="viewport" content="user-scalable=no, initial-scale=1, minimum-scale=1.0, width=device-width" viewport-fit=cover/>

我读过并尝试过的所有内容似乎都证实,包括 viewport-fit=cover 在内,在 Chrome iOS 上不起作用。

这是我找到的资源页面:https ://webkit.org/blog/7929/designing-websites-for-iphone-x/

我正在制作一个网页,其中包含用于 3D 模型的 Three.js 渲染的单个画布,并且希望整个场景覆盖该页面。

javascript css viewport chrome-ios

7
推荐指数
1
解决办法
1638
查看次数

Three.js Object3D 缺少 isMesh、Material 和 Geometry 属性?

我使用的是 Three.js r97 和 Angular 7。

我可以在本地运行和提供应用程序(按原样工作),但我无法为具有类型错误的生产构建。

错误 TS2339:类型“Object3D”上不存在属性“isMesh”。

错误 TS2339:“Object3D”类型上不存在“材料”属性。

错误 TS2339:类型“Object3D”上不存在属性“几何”。

发生这种情况的地方是在加载对象之后我正在遍历零件。

child.isMesh 并且对子对象所做的修改会引发错误。

我是打字稿的新手,不确定是否有更好的方法来处理这些操作。据我所知,我无法强制进行生产构建。任何有助于解决此问题的建议将不胜感激。

this.loader = new THREE.FBXLoader();
      this.loader.load('assets/models/C4D_Export.fbx', object => {

          object.traverse( child => {

              if( child.type == "Group"){
                  child.name = 'ToolGroup';
              }
              if ( child.isMesh ) {

                  const oldMat = child.material;
                  //CONVERT MATERIAL TO STANDARD MATERIAL.
                  child.material = new THREE.MeshStandardMaterial({
                      color: oldMat.color,
                      map: oldMat.map,
                  });

                  child.castShadow = true;
                  child.receiveShadow = true;
                  child.material.combine = THREE.MixOperation;
                  child.material.envMap = envMap;
                  child.material.shininess=10;
                  child.material.refractionRatio=1;
                  child.material.reflectivity=1;
                  //child.material.normalMap = texture;
                  //child.material.normalMapType = …
Run Code Online (Sandbox Code Playgroud)

three.js typescript

6
推荐指数
1
解决办法
5138
查看次数

在 THREE.js 中查看材质的已编译着色器代码?

每当我在 THREE.js 中编写自定义着色器并且犯了错误时,控制台都会输出一条带有编译后的 GLSL 代码的漂亮错误消息。它包括我的代码以及 Three.js 自动添加的所有额外行:

在此输入图像描述

问题:

有什么方法可以输出内置材料的编译后vertexShader和内容吗?fragmentShaderTHREE.MeshLambertMaterial在我的项目中使用,我想阅读编译后的 GLSL 代码以了解它是如何在幕后运行的。我知道我可以转到库的\src\renderers\shaders\ShaderLib\meshlambert_frag.glsl但它有几十#include行,并且没有 THREE.js 自动附加的所有额外属性/制服。

我尝试在第一次渲染后 console.log 材质的属性,但找不到编译后的 GLSL 代码:

var firstRender = true;

function update(){
    renderer.render(scene, camera);

    if(firstRender === true){
        // Where in myMaterial is the GLSL code stored?
        console.log(myMaterial.program.vertexShader);
        firstRender = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript glsl webgl three.js

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

react-router-dom:从<BrowserRouter>组件中获取props.location

我有一个简单的应用程序,使用BrowserRouter'react-router-dom'v4.我试图location.pathname<BrowserRouter/>组件内访问该属性,但无济于事:

class App extends Component{
  render(){
    return (
      <BrowserRouter>
        // How do I access this.props.location?
        <div className={(this.props.location.pathnme === "/account") ? "bgnd-black" : "bgnd-white"} >
          <Switch>
            <Route path="/login" component={LoginPage}/>
            <Route path="/success" component={LoginSuccess}/>
            <Route path="/account" component={MyAccount}/>
            ...
            <Route component={Error404}/>
          </Switch>
        </div>
      </BrowserRouter>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过子组件访问应用程序的当前路径位置this.props.location.pathname,但我需要从父组件访问它,就在下面<BrowserRouter/>,运行与子组件无关的其他逻辑.我怎样才能获得这个位置?

reactjs react-router-dom

5
推荐指数
2
解决办法
6187
查看次数

有没有办法让 console.log() 更新一行而不是附加新行?

如果我想跟踪一个更新非常频繁的变量,我可以这样做console.log(myVar);,它会在控制台底部添加一行:

在此输入图像描述

有没有办法替换最后一行的值,而不是在底部附加新行?

在此输入图像描述

这将非常有帮助,因为这样我就可以查看以前的日志,而无需将它们滚动到顶部视图之外。

我尝试过以下方法:

console.clear();
console.log(myObject);
console.log(myVar);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为重新记录对象会折叠它们,而且它在 Chrome 中闪烁太多。我在控制台上阅读了 MDN 文档,尽管它有很多简洁的功能,但我不知道如何重写一行。我已经看到它是在终端/命令提示符中完成的,浏览器控制台是否具有该功能?

javascript debugging console.log

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

拥有高于 Number.MAX_SAFE_INTEGER 的值有什么意义?

JavaScriptNumber.MAX_SAFE_INTEGER. 任何超出此范围的数字都有不准确的风险。这是因为如本答案所述,由于位移动它无法在内存中准确表示:

var max = Number.MAX_SAFE_INTEGER;

max + 0;    // 9,007,199,254,740,991
max + 1;    // 9,007,199,254,740,992
max + 2;    // 9,007,199,254,740,992 (!)
max + 3;    // 9,007,199,254,740,994
max + 4;    // 9,007,199,254,740,996 (!)
// ...
Run Code Online (Sandbox Code Playgroud)

您在上面得到的任何结果max都非常不可靠,使其几乎完全无用,并且如果开发人员没有预料到或意识到此限制,则很容易导致错误。

我的问题是,超过这个值的数字有什么意义?JavaScript 是否有任何实际用途来允许Number超出此范围?它可以达到Number.MAX_VALUE(1.79e+308),大大大于MAX_SAFE_INTEGER,但是这两个值之间的所有内容都不是很有用,它迫使开发人员切换到BigInt

javascript

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