【问题标题】:How to setAttribute value with url? [duplicate]如何使用 url 设置属性值? [复制]
【发布时间】:2019-11-21 18:38:51
【问题描述】:

我正在为网站的 DOM 设置一个 url。现在我可以通过复制实际的 url 来完成,如下所示:

document.getElementById('mediaWebUrl').setAttribute('value','https://www.youtube.com/watch?v=hkOTAmmuv_4');

不够方便。我想用变量替换实际的 url。如下:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
     var activeTab = tabs[0];
     var videoUrl = activeTab.url; // or do whatever you need    
  });

但是当我做如下工作时:

document.getElementById('mediaWebUrl').setAttribute('value',videoUrl);

它没有成功,什么也没发生。为什么?我确认变量“videoUrl”的类型是使用警报(typeof videoUrl)的字符串。作为 Javascript 的新手,我真的需要这个简单问题的建议。谢谢。

【问题讨论】:

  • 我发现这个问题类似于获取chrome API的返回值。不幸的是,这似乎是不可能的。 stackoverflow.com/questions/33755163/…。如果有人有更好的想法,我想知道很多。

标签: javascript google-chrome-extension


【解决方案1】:

你可以写一个函数,传入div的id(你想在哪里显示视频)和视频url的值,然后调用该函数设置属性。

示例代码:

function setVal(id, val){
    var el = document.getElementById(id); //get the element
    var attrVal = val; //set the url

    el.setAttribute('value', val) //set the value to the url

}

setVal("myVid", "https://www.youtube.com/watch?v=hkOTAmmuv_4"); //call the function 
(in this case, myVid is the id)

您的代码可能不起作用,因为该变量仅在本地定义。 您可以使用 Web 控制台检查错误。

希望这会有所帮助!

【讨论】:

  • 我认为错误原因是本地定义的。我可以定义一个输出变量或返回值吗?像 url0=chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { ...return videoUrl}) 。这可能是一个解决方案吗?
  • 这里是凌晨 4 点。您可以以任何您认为合适的方式进行调整。使用窗口位置?必须抓住一些眼色。希望答案有所帮助。 .
  • 示例代码指出了问题,但我无法用它解决问题。我无法从 chrome.tabs.query 命令中获取 url。由于“setAttribute”函数在另一个网页下使用,我也不能使用嵌套函数。这个问题仍然让我感到困惑。谢谢。
  • 你可以像var vidUrl ="https://www.youtube.com/watch?v=hkOTAmmuv_4"一样设置一个var(在函数外),然后将函数调用为setVal ("myVid", vidURL);你的主要问题是你的var是在本地而不是全局定义的。希望你能成功。
猜你喜欢
  • 2012-03-24
  • 2016-03-25
  • 1970-01-01
  • 2014-03-18
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
相关资源
最近更新 更多