转跳到内容

幽月零

【会员】论坛元勋
  • 内容数

    87,863
  • 加入

  • 最后访问

  • 赢得天数

    1

幽月零 发表的所有内容

  1. MZ的默認行為應該和mv差不多,我沒搞錯的話MV在不是以nwjs運行的的情況下,數據好像是保存在瀏覽器的localStorage中的。當然你要想改也不會很困難 另外nwjs直接支持commonjs,還有像是fs模塊一類的東西,這些在瀏覽器上全都不支持。如果制作者沒注意這方面的話會產生一些麻煩,又或者說一開始就沒打算支持用戶在瀏覽器上運行
  2. 此内容有访问限制,请到内容页面查看。
  3. 此内容有访问限制,请到内容页面查看。
  4. 此内容有访问限制,请到内容页面查看。
  5. 此内容有访问限制,请到内容页面查看。
  6. 此内容有访问限制,请到内容页面查看。
  7. 此内容有访问限制,请到内容页面查看。
  8. 竟然用我的招式來對付我,月醬不講武德
  9. 話說總感覺硬盤比之前貴了很多,雖然不太記得價格了,但上次去買的時候好像便宜不少 話說為什麼一些盤我自己香港ip被限了,反而我掛日本ip就下得很快
  10. 喵咪有玩過noita嗎,以前玩過好一陣子都沒玩明白
  11. 有壞人(蹲下
  12. 好過分…雖然想這樣說,但我也做過這種事
  13. 你聽聽不就好了
  14. 比起鐵錘更想要……咳咳
  15. 話說之前買了Tevi也還沒玩
  16. 沒有證據也是大騙子
  17. 什麼時候的事
  18. 我就說不超過200×200不應該會算這麼慢。一查發現是rm自己的判斷可否通行的function,平常普通地移動的話只需要判斷一格和單方向,它效率低點就低點,問題不大。但這種需要大量調用的情況下影響就大了
  19. 為了速度嘗試了分別從起點和終點一起尋路,結果是有些地方會斜着扭一下,雖然整體上影對路徑的影響不大,但不太好看。
  20. 反正應該很快就處理好了,果然自己再寫一個更省事。不過目前雖然能運作,但還有一些優化的問題需要處理
  21. 群裡拿的,別人說能走,但只能走一下
  22. 我裂開來,從別人那接了一個有問題的簡易4方向A*算法。依我說與其給這東西修bug還不如讓我重頭寫一個來得省事
  23. 光看標題可能會有點抽象。先說起因,最近看到了這個帖子,https://sstm.moe/topic/358822-不用打开检查界面就通过外链插入音视频控件的脚本直接获取全民k歌电脑网页音频源文件的脚本(基于tampermonkey插件)/,所以去找了下可以準確地將元素插入到相應的編輯框的方法,然後就發現了這個 首先看下圖,隨便找個回覆點修改,可以看到在 CKEDITOR.instances 中有兩個object,帶有id的是最底下新回覆的,先不用管它。comment_value 則是修改回覆用的編輯框。 這時候在"其他媒體" >> "插入外部圖片"中輸入鏈接可以正常插入圖片,到這裡都沒有問題。 但假如在保持之前的修改編輯器存在的情況下再打開另一個,可以看到CKEDITOR.instances 中仍然只有兩個object 這時在任意的修改框裡插入圖片,圖都會出現在最後打開的那一個裡面 問題講完了,再說說原因,首先可以看到這個編輯框是基於CKEditor的,在創建的時候會調用CKEDITOR.add,在CKEDITOR.instances[b.name] = b; 這裡用name 作為key把editor寫入到CKEDITOR.instances裡面(也就是一開始展示的那個)。 但是所有的修改框都叫comment_value,所以在CKEDITOR.instances中只能找到最後創建的那一個。 CKEDITOR.add = function(b) { function h() { CKEDITOR.currentInstance == b && (CKEDITOR.currentInstance = null, CKEDITOR.fire("currentInstance")) } CKEDITOR.instances[b.name] = b; b.on("focus", function() { CKEDITOR.currentInstance != b && (CKEDITOR.currentInstance = b, CKEDITOR.fire("currentInstance")) }); b.on("blur", h); b.on("destroy", h); CKEDITOR.fire("instance", null, b) } 其二就是在插入圖片時也是在CKEDITOR.instances裡面去找的,可以看var editor = CKEDITOR.instances[$(this.scope).data('editorid')]; 這一句,最終導致在同時存在多個修改框時,只會找到最後創建的那一個 insertLink: function(e) { var url = this.scope.find('[data-role="linkURL"]').val().replace(/'/g, '%27').replace(/"/g, '%22').replace(/</g, '%3C').replace(/>/g, '%3E'); if (!url) { $(this.scope).find('.ipsFieldRow.ipsFieldRow_fullWidth').addClass('ipsFieldRow_error'); return; } else { $(this.scope).find('.ipsFieldRow.ipsFieldRow_fullWidth').removeClass('ipsFieldRow_error'); } $(this.scope).find('.elLinkError').remove(); if (!url.match(/^[a-z]+\:\/\//i) && !url.match(/^mailto\:/i) && !url.match(/^\#/)) { url = 'http://' + url.replace(/^\/*/, ''); } var editor = CKEDITOR.instances[$(this.scope).data('editorid')]; var selection = editor.getSelection(); if (!_.isUndefined(editor._linkBookmarks)) { selection.selectBookmarks(editor._linkBookmarks); delete editor._linkBookmarks; } var selectedElement = selection.getSelectedElement(); if (selectedElement && selectedElement.is('img')) { var selectedElement = $(selection.getSelectedElement().$); if (!selectedElement.parent().is('a')) { var element = CKEDITOR.dom.element.createFromHtml("<a href='" + url + "'>" + selectedElement[0].outerHTML + "</a>"); editor.insertElement(element); } else { selectedElement.parent().attr('href', url).removeAttr('data-cke-saved-href'); } this.scope.find('input.cEditorURL').val(''); this.trigger('closeDialog'); } else if (selectedElement && (selectedElement.is('a') && $(selection.getSelectedElement().$).children().is('img'))) { selectedElement.setAttribute('href', url).removeAttribute('data-cke-saved-href'); this.scope.find('input.cEditorURL').val(''); this.trigger('closeDialog'); } else { if ($(this.scope).data('image')) { this.scope.find('[data-role="linkURL"]').addClass('ipsField_loading'); this.scope.find('[data-action="linkButton"]').prop('disabled', true); var scope = this.scope; var self = this; var img = new Image(); img.onerror = function () { scope.find('[data-role="linkURL"]').removeClass('ipsField_loading'); scope.find('[data-action="linkButton"]').prop('disabled', false); scope.find('.ipsFieldRow.ipsFieldRow_fullWidth').addClass('ipsFieldRow_error'); } ; img.onload = function () { var ajaxUrl = editor.config.controller + '&do=validateLink' if ($(this.scope).attr('data-image')) { ajaxUrl += '&image=1'; } ips.getAjax()(ajaxUrl, { data: { url: url, width: img.width, height: img.height, image: 1 }, type: 'post' }).done(function (response) { if (response.embed) { scope.find('[data-role="linkURL"]').removeClass('ipsField_loading'); scope.find('[data-action="linkButton"]').prop('disabled', false); scope.find('input.cEditorURL').val(''); editor.insertHtml(response.preview); self.trigger('closeDialog'); } else { scope.find('[data-role="linkURL"]').removeClass('ipsField_loading'); scope.find('[data-action="linkButton"]').prop('disabled', false); scope.find('.ipsFieldRow.ipsFieldRow_fullWidth').addClass('ipsFieldRow_error'); if (!_.isUndefined(response.errorMessage)) { scope.find('.ipsFieldRow.ipsFieldRow_fullWidth').append("<span class='elLinkError ipsType_warning'>" + response.errorMessage + "</span>"); } } }).fail(function () { scope.find('[data-role="linkURL"]').removeClass('ipsField_loading'); scope.find('[data-action="linkButton"]').prop('disabled', false); scope.find('.ipsFieldRow.ipsFieldRow_fullWidth').addClass('ipsFieldRow_error'); }); } img.src = url; } else { if (this.scope.find('[data-role="linkText"]').length) { var title = this.scope.find('[data-role="linkText"]').val().replace(/ {2}/g, ' &nbsp;'); if (!title) { title = decodeURI(url); } title = title.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); var element = CKEDITOR.dom.element.createFromHtml("<a>" + title + "</a>"); } else { element = selectedElement; } element.setAttribute('href', url); editor.insertElement(element); this.scope.find('input.cEditorURL').val(''); this.trigger('closeDialog'); } } } 我無法保證這裡說的東西完全正確,但是有打斷點檢查過,應該大致上是對的…吧? 順帶一提,如果你想寫腳本確實有需要用到這個editor,除了在CKEDITOR.instances裡面找,在這個div身上也可以拿到 順便再吐槽一下論壇的附件,我忍這東西很久了。直接點擊進行下載的時候不會指定文件名稱(明明在頁面上就有顯示文件名)。而且有些類型的文件不會直接下載,而是會跳轉到新頁面直接顯示(就算加了download attribute也不行。瀏覽器基於安全性的考慮,只有來自同一個來源的時候它才會生效)
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款