public static async Task RunDIYToolCode(WebView webView, DIYTool tool) { if (!CheckJingyanDomain(webView)) { App.currentMainPage.ShowNotify("自定义功能无效", strDomainNotSupported); return; } string desp = ""; if (tool.IsClickTrig) { desp = "点击方式运行"; } else { desp = "到达了指定页面触发运行"; } App.currentMainPage.ShowNotify("运行 " + tool.Name, desp, Symbol.Comment); string errorable = ErrableUsingNotify(tool.Code); try { await RunJs(webView, errorable); } catch (Exception ee) { await Utility.ShowMessageDialog("运行出错", "代码有可能存在语法错误,运行不成功."); await Utility.ShowDetailedError("错误详细信息", ee); } }
private async void listViewDIYTools_Tapped(object sender, TappedRoutedEventArgs e) { if (e.OriginalSource.GetType() == typeof(Button)) { return; } DIYTool tool = (DIYTool)listViewDIYTools.SelectedItem; if (tool == null) { return; } if (tool.IsClickTrig) { await App.currentMainPage.RunDIYClickTool(tool); Tag = ContentDialogResult.None; Hide(); } else { await App.currentMainPage.ToggleDIYNavigateTool(tool); listViewDIYTools.ItemsSource = null; listViewDIYTools.ItemsSource = StorageManager.dIYToolsSettings.DIYTools; } }
public void Init(bool allClear = false) { //准备自带的功能 var tempTools = new ObservableCollection <DIYTool>(); DIYTool dt1 = new DIYTool( "开宝箱", "https://jingyan.baidu.com/usersign", "navigate", "先激活此工具,再打开签到日历页面,会一直开宝箱,直到所有宝箱都开启.", "var openb = document.getElementById('openBoxBtn'); if(openb) openb.click();"); DIYTool dt21 = new DIYTool( "去往老虎机页面", "https://jingyan.baidu.com/user/nuc", "click", "先点击此工具,然后用 “开老虎机” 工具.", "window.external.notify(\"GOTO: https://jingyan.baidu.com/activity/lottery\");"); DIYTool dt22 = new DIYTool( "开老虎机", "https://jingyan.baidu.com/user/nuc", "click", "先通过 “去往老虎机页面” 工具进入老虎机,再点击此工具.", "var zp = document.getElementsByClassName(\"zhuanpan\")[0];\nvar try10 = zp.getElementsByClassName(\"try10\")[0];\nfunction lwj(){\n if(!try10.classList.contains(\"disable\")){\n try10.click();\n setTimeout(lwj, 1000);\n }\n}\nlwj();"); DIYTool dt3 = new DIYTool( "查看未读消息-触发器", "https://jingyan.baidu.com/user/nuc", "click", "先激活 “查看未读消息” 功能,然后点击这个进入工作页面。", "window.external.notify('GOTO: https://jingyan.baidu.com/user/nucpage/message FROM: https://jingyan.baidu.com/user/nuc/');"); DIYTool dt4 = new DIYTool( "查看未读消息", "https://jingyan.baidu.com/user/nucpage/message", "navigate", "先激活此功能,然后点击 查看未读消息-触发器", "var cks = document.getElementsByClassName('msg-more-btn'); var tcount = 200; for(let ck of cks) {setTimeout(function(){ck.click()}, tcount); tcount += 200;}"); tempTools.Add(dt1); tempTools.Add(dt21); tempTools.Add(dt22); tempTools.Add(dt3); tempTools.Add(dt4); if (allClear) { DIYTools.Clear(); foreach (var tool in tempTools) { DIYTools.Add(tool); } } else { var midTools = new ObservableCollection <DIYTool>(); foreach (var utool in DIYTools) { bool isDefault = false; foreach (var tool in tempTools) { if (tool.Name == utool.Name) { isDefault = true; } } if (!isDefault) { midTools.Add(utool); } } DIYTools.Clear(); foreach (var tool in tempTools) { DIYTools.Add(tool); } foreach (var tool in midTools) { DIYTools.Add(tool); } } }
private async void buttonSaveDIYEntry_Click(object sender, RoutedEventArgs e) { if (textBoxDIYEntryName.Text == "") { await Utility.ShowMessageDialog("内容不完整", "自定义功能名称不能为空。"); return; } if (textBoxDIYEntryCode.Text == "") { await Utility.ShowMessageDialog("内容不完整", "代码不能为空。"); return; } if (radioDIYEntryUrlTrig.IsChecked == true && !(textBoxDIYEntryUrl.Text.StartsWith("https://"))) { await Utility.ShowMessageDialog("内容不完整", "要使用到达页面触发的方式,必须填写https开头的页面地址."); return; } bool isFound = false; foreach (var tool in StorageManager.dIYToolsSettings.DIYTools) { if (tool.Name == textBoxDIYEntryName.Text) { tool.TargetUrl = textBoxDIYEntryUrl.Text; tool.Note = textBoxDIYEntryNote.Text; tool.Code = textBoxDIYEntryCode.Text; tool.TrigType = radioDIYEntryClickTrig.IsChecked == true ? "click" : "navigate"; isFound = true; break; } } if (!isFound) { var tool = new DIYTool( textBoxDIYEntryName.Text, textBoxDIYEntryUrl.Text, radioDIYEntryClickTrig.IsChecked == true ? "click" : "navigate", textBoxDIYEntryNote.Text, textBoxDIYEntryCode.Text); StorageManager.dIYToolsSettings.DIYTools.Add(tool); } bool isSucceed = await StorageManager.SaveDIYToolsSettings(); if (!isSucceed) { await Utility.ShowMessageDialog("保存出错", "自定义工具未能保存到文件. 可联系开发者. [email protected]"); } else { await Utility.ShowMessageDialog("保存成功", "自定义工具已保存."); listViewDIYTools.ItemsSource = null; listViewDIYTools.ItemsSource = StorageManager.dIYToolsSettings.DIYTools; } }